问题同题目,不得其解,希望可以得到解释,谢谢

解决方案 »

  1.   

    JAVA采取的处理方式而已。
    因为在JVM里,int类型是32位的
    位移32(或32的倍数)比特相当于回到原点,因此值还是保持原来的值。
    除非你在一个周期内进行位移,JVM才认为有意义!!
      

  2.   

    比如 i>>j,
    对与int类型的操作数进行移位,后面的操作数j只使用其二进制表示的低五位。32的2进制低5位是00000,所以相当于没移。你可以实际处理使用 j%32的结果进行运算。
    对与long类型,使用后面操作数的低6位
      

  3.   

    再给楼主说的透彻点,在进行位移处理的时候,比如 2>>64 ,JVM并不会真去移动64位然后又回到原来的位置(因为是32位的2进制),JVM会对位移的位数进行%32取余再移动.   既然是这样 ,那么int i = 2;  i >> 32 == 2 .因为移32等于移0
      

  4.   


    我不明白你说的是什么啊!!请你讲得简单一点行吗?红色部分如果对Long型来说是不是就是使用其二进制的低六位啊??