Java:int<< (-1)== 0?

时间:2014-05-19 13:07:53

标签: java

在java中,当我移动一个int时,无论它是什么值,都在左边:

4 << (-1);

当偏移量为-1时,我将始终为0。

为什么?

1 个答案:

答案 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。