总结
- n为
非负数
时,>> 1和/ 2的结果是一样
的 - n为
负数且还是偶数
时,>> 1和/ 2的结果是一样
的 - n为
负数且还是奇数
时,>> 1和/ 2的结果是不一样的
原因是奇数除二会发生截断现象。而>> 1和/ 2在n为负奇数时截断的反向不一样。
-5 / 2 = -(int)2.5 = -2
,这里是把绝对值变小了,加个负号,结果就变大了。
-5 >> 1 = (1011) >> 1 = (1101) = -3
,假设用4-bit表示一个整数,补码表示。发现结果变小了。
我们纵向比较一下
-5 / 2 = -2,5 / 2 = 2
。这表明除二是向零取整
-5 >> 1 = -3,5 >> 1 = 2
。这表明右移一位是向下取整