C语言中的右移一位是不是应该除以2?

 我来答
帐号已注销
推荐于2019-09-30 · TA获得超过917个赞
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部

不是

C语言的有符号整数向右移位运算不等同于除以2的某次幂如(-1)/2和(-1)>>1,前者的结果一般是0,后者一般是-1,所以在C语言中,负数向右移动1位并不等同于除以2。

解决的方法是:当除数是2的N次幂时,x/(2^N),可以用移位操作(x + 2^N - 1) >> N来代替(x + 2^N - 1须小于0,^是乘方操作)
在C语言中,-100/8=-12,而-100>>3=-13,两者不相等,而用(-100+7)>>3代替则相等。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式