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

Почему следующие две операции дают разные результаты в 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
8
задан Aleks G 2 May 2012 в 15:21
поделиться