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.