标签: java
为什么System.out.println(-1<<32)在Java中显示-1?有根本原因吗?我希望有人能解释一下!
System.out.println(-1<<32)
-1
答案 0 :(得分:8)
在Java(和JavaScript)中,a << b自动包装b模数字类型的位长。你使用的是int,它是32位,32%32 = 0,因此没有变化。你总是可以检查b以上(位长 - 1)并自动设置为零而不是移位。
a << b
b
int