如题。 比如说做运算 i=i>>32;i值不变

解决方案 »

  1.   

    int i=8;
    i=i>>32;最后i=8;如果i是long 8;
    i=i>>32;
    结果为0
    i=i>>64;
    结果不变 还是8
    估计是>>位移数超过最大长度的时候 会自动做一个%运算
      

  2.   

    无论正数、负数,它们的右移、左移、无符号右移 32 位都是其本身,比如 -5<<32=-5、-5>>32=-5、-5>>>32=-5。
      

  3.   

    在 JVM 中,>> 操作,后面的数是 int 类型的。如果前一个操作数是 int 类型的话,取右移位数的低 5 位,相当于右移位数与 0x1f 做了 & 运算;
    如果前一个操作数是 long 类型的话,取右移位数的低 6 位,相当于右移位数与 0x3f 做了 & 运算。正如楼主的例子,>> 32,32(100000),可以看到它的低 5 位全是“0”,与 >> 0 的结果一致。