移位长度总是介于 0 到31 之间,如果左操作数是 long 类型的,则介于 0 到 63 之间。
这个长度是对 32取余的,如果左操作数是 long 类型的,则对 64 取余。
也就是说没有任何移位长度可以让一个 int 数值丢弃其所有的 32 位,或者是让一个 long数值丢弃其所有的 64 位。
System.out.println(-1 << 32);
int tmp = -1 << 31;
System.out.println(tmp);
System.out.println(tmp << 1);
运行结果:
-1
-2147483648
0