Java-Ergebnisse unterscheiden sich für (int) Math.pow (2, x) und 1 << x

Warum führen die folgenden beiden Operationen in Java zu unterschiedlichen Ergebnissen fürx = 31 oder32 aber die gleichen ergebnisse fürx=3?

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

Ergebnisse:

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

Antworten auf die Frage(5)

Ihre Antwort auf die Frage