对于>>
当是一个负数的时候,为什么出现的结果让我这么的无法参透
对于int类型
-3>>1=-2
10000000 00000000 00000000 00000011 //-3
11000000 00000000 00000000 00000001 //右移1位
右移1位以后,这个结果不应该是-2吧也,这究竟是为什么呢?最高位的1代表符号,那结果也不是-2啊?求各路大神指点
-5>>2=-2
10000000 00000000 00000000 00000101 //-5
11100000 00000000 00000000 00000001 //右移2位
最高位的1代表符号,那结果也不是-2啊?求各路大神指点
------解决方案--------------------
因为数字在计算机里面是用补码表示的。LZ吧这些数字转成补码,然后右移(假设高位补1),再转回成源码,就是这个结果