Sobes.tech
Middle

Waarom is Integer.MAX_VALUE plus één gelijk aan Integer.MIN_VALUE?

sobes.tech AI

Antwoord van AI

Integer.MAX_VALUE — is de maximale waarde voor een 32-bit ondertekend geheel in Java. Het is gelijk aan 2<sup>31</sup> - 1.

Representatie in geheugen:

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

Bij het toevoegen van één treedt een overflow op:

Integer.MAX_VALUE + 1:

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

Het meest significante bit wordt 1, wat in de tekenrepresentatie wijst op een negatief getal. Voor de twee's complement (de standaardrepresentatie van negatieve getallen in Java), komt 1000...0000 overeen met het kleinste negatieve getal dat met 32 bits kan worden weergegeven, namelijk Integer.MIN_VALUE (-2<sup>31</sup>).

Dit gedrag is standaard voor signed gehele getaltypes in Java en veel andere talen die twee's complement gebruiken.