Результаты Java отличаются для (int) Math.pow (2, x) и 1 << x

Почему следующие две операции дают разные результаты в Java дляx = 31 или же32 но те же результаты дляx=3?

<code>int x=3;
int b = (int) Math.pow(2,x);
int c = 1<<x;
</code>

Результаты:

<code>x=32: b=2147483647; c=1;
x=31: b=2147483647; c=-2147483648;
x=3:  b=8         ; c=8
</code>

Ответы на вопрос(4)

Ваш ответ на вопрос