为什么Java中的System.out.println(-1<< 32)= - 1?

时间:2012-03-27 02:44:22

标签: java

为什么System.out.println(-1<<32)在Java中显示-1?有根本原因吗?我希望有人能解释一下!

1 个答案:

答案 0 :(得分:8)

在Java(和JavaScript)中,a << b自动包装b模数字类型的位长。你使用的是int,它是32位,32%32 = 0,因此没有变化。你总是可以检查b以上(位长 - 1)并自动设置为零而不是移位。