Los resultados de Java difieren para (int) Math.pow (2, x) y 1 << x

¿Por qué las siguientes dos operaciones producen resultados diferentes en Java parax = 31 o32 pero los mismos resultados parax=3?

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

Resultados:

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

Respuestas a la pregunta(5)

Su respuesta a la pregunta