Почему следующие две операции дают разные результаты в Java для x = 31
или 32
, но одинаковые результаты для x=3
?
int x=3;
int b = (int) Math.pow(2,x);
int c = 1<<x;
Результаты:
x=32: b=2147483647; c=1;
x=31: b=2147483647; c=-2147483648;
x=3: b=8 ; c=8