Sobes.tech
Middle

De ce Integer.MAX_VALUE plus unu este egal cu Integer.MIN_VALUE?

sobes.tech AI

Răspuns de la AI

Integer.MAX_VALUE — reprezintă valoarea maximă pentru un tip de date întreg cu semn de 32 de biți în Java. Este egal cu 2<sup>31</sup> - 1.

Reprezentarea în memorie:

Integer.MAX_VALUE: 0111...1111 (31 de unu)

Când se adaugă unu, are loc o depășire:

Integer.MAX_VALUE + 1:

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

Bitul cel mai semnificativ devine unu, ceea ce indică un număr negativ în reprezentarea cu semn. Pentru complementul de doi (reprezentarea standard a numerelor negative în Java), 1000...0000 corespunde celui mai mic număr negativ care poate fi reprezentat cu 32 de biți, adică Integer.MIN_VALUE (-2<sup>31</sup>).

Acest comportament este standard pentru tipurile întregi cu semn în Java și în multe alte limbaje care utilizează complementul de doi.