Sobes.tech
Middle

Warum ist Integer.MAX_VALUE plus eins gleich Integer.MIN_VALUE?

sobes.tech KI

Antwort von AI

Integer.MAX_VALUE — ist der maximale Wert für einen 32-Bit vorzeichenbehafteten Ganzzahltyp in Java. Es entspricht 2<sup>31</sup> - 1.

Darstellung im Speicher:

Integer.MAX_VALUE: 0111...1111 (31 Einsen)

Beim Hinzufügen von eins tritt ein Überlauf auf:

Integer.MAX_VALUE + 1:

  0111...1111
+ 0000...0001
------------
  1000...0000

Das höchstwertige Bit wird eins, was in der vorzeichenbehafteten Darstellung auf eine negative Zahl hinweist. Für die Zweierkomplement-Darstellung (Standarddarstellung negativer Zahlen in Java) entspricht 1000...0000 der kleinsten negativen Zahl, die mit 32 Bits dargestellt werden kann, also Integer.MIN_VALUE (-2<sup>31</sup>).

Dieses Verhalten ist standardmäßig für vorzeichenbehaftete Ganzzahltypen in Java und vielen anderen Sprachen, die das Zweierkomplement verwenden.