Учитывая следующий код:Бит проблема сдвига
public class Something {
public static void main(String[] args) {
int num = 1;
num <<= 32;
System.out.println(num);
num = 1;
for (int i = 0 ; i < 32; i++)
num <<= 1;
System.out.println(num);
}
}
первый выход (от NUM < < = 32) равен 1.
и второй выход (из цикл) равен 0.
Я не понимаю, он выглядит таким же, как и я .. в обоих направлениях сдвинуть цифру «1» (lsb) 32 раза, а результаты разные.
Может ли кто-нибудь объяснить?
Заранее спасибо.
Подробнее см. В [JLS 15.19] (http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.19). –
@LouisWasserman: Yup, добирался туда :) –
Perfect. Большое спасибо. понял. – Rouki