日期:2014-05-20  浏览次数:20664 次

有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