当前位置: 代码迷 >> 其他开发语言 >> 对于-三右移出现了灵异,为什么
  详细解决方案

对于-三右移出现了灵异,为什么

热度:286   发布时间:2016-05-02 04:00:28.0
对于-3右移出现了灵异,为什么
对于>>
当是一个负数的时候,为什么出现的结果让我这么的无法参透
对于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),再转回成源码,就是这个结果
  相关解决方案