为什么1>>32 == 1?

13 浏览
0 Comments

为什么1>>32 == 1?

我在想这是否是JVM的一个bug?

java版本 "1.6.0_0"

OpenJDK 运行时环境 (IcedTea6 1.4.1) (6b14-1.4.1-0ubuntu13)

OpenJDK 64-Bit 服务器虚拟机 (build 14.0-b08, 混合模式)

class Tmp {
    public static void main(String[] args) {
        System.out.println("1>>1 = "+(1>>1));
        System.out.println("1>>2 = "+(1>>2));
        System.out.println("1>>31 = "+(1>>31));
        System.out.println("1>>32 = "+(1>>32));
        System.out.println("1>>33 = "+(1>>33));
    }
}

当我运行它时,产生了以下结果:

1>>1 = 0
1>>2 = 0
1>>31 = 0
1>>32 = 1 <---------- 我认为应该是0
1>>33 = 0

对于任何32的倍数,我也得到了相同的结果。

我需要编写自己的右移操作来检查这个问题吗?

0