为什么1>>32 == 1?
- 论坛
- 为什么1>>32 == 1?
13 浏览
为什么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的倍数,我也得到了相同的结果。
我需要编写自己的右移操作来检查这个问题吗?