这是我今天看到的关于移位运算的帖子,然后有了一点想法。
对于一个byte类型的变量a,a = 5 ,它的二进制补码为00000101,按照这个想法,逻辑右移一位的结果为00000010,正数的反码、补码、原码都一样,它的结果应该为2。
同一个变量,进行同样的初始化操作,算数右移一位,结果应该为10000010,也就是说,算数右移一位,这个数从正数变成了负数,结果为-2。
我不明白,为什么右移操作会连符号位一起改变,还有一点,就是,为什么移位操作会比乘除法更快捷?因为我要计算它的原码,对于负数,我还要计算反码和补码。