相关疑难解决方法(0)

为什么1 >> 32 == 1?

我想知道这可能是一个JVM错误吗?

java版"1.6.0_0"OpenJDK运行时环境(IcedTea6 1.4.1)(6b14-1.4.1-0ubuntu13)OpenJDK 64位服务器VM(内置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));
    }
}
Run Code Online (Sandbox Code Playgroud)

当我运行它时产生这个:

1>>1 = 0
1>>2 = 0
1>>31 = 0
1>>32 = 1 <---------- should be 0 i think
1>>33 = 0
Run Code Online (Sandbox Code Playgroud)

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

我需要写自己的右移检查这个吗?

java bit-manipulation

30
推荐指数
2
解决办法
3347
查看次数

标签 统计

bit-manipulation ×1

java ×1