当前位置: 代码迷 >> J2SE >> 有int i = 2;为什么 i >> 32 == 2? i 的值并没有改变呢?解决方案
  详细解决方案

有int i = 2;为什么 i >> 32 == 2? i 的值并没有改变呢?解决方案

热度:313   发布时间:2016-04-24 12:40:30.0
有int i = 2;为什么 i >> 32 == 2? i 的值并没有改变呢???
问题同题目,不得其解,希望可以得到解释,谢谢。。。

------解决方案--------------------
JAVA采取的处理方式而已。
因为在JVM里,int类型是32位的。。。
位移32(或32的倍数)比特相当于回到原点,因此值还是保持原来的值。
除非你在一个周期内进行位移,JVM才认为有意义!!
------解决方案--------------------
再给楼主说的透彻点,在进行位移处理的时候,比如 2>>64 ,JVM并不会真去移动64位然后又回到原来的位置(因为是32位的2进制),JVM会对位移的位数进行%32取余再移动. 既然是这样 ,那么int i = 2; i >> 32 == 2 .因为移32等于移0
  相关解决方案