在java中,当我移动一个int时,无论它是什么值,都在左边:
4 << (-1);
当偏移量为-1时,我将始终为0。
为什么?
答案 0 :(得分:1)
仅使用移位的低5位,因此您移位31。这意味着1&lt;&lt; -1应该是Integer.MIN_VALUE而不是0.长时间使用低6位。
请参阅http://ideone.com/C2m9gi,了解它不是0的示例。
System.out.println(1 << -1);
简而言之,你总是得到0因为你继续尝试偶数。尝试一个奇数,你得到Integer.MIN_VALUE。