Middle
¿Por qué Integer.MAX_VALUE más uno es igual a Integer.MIN_VALUE?
sobes.tech AI
Respuesta de la IA
Integer.MAX_VALUE — es el valor máximo para un tipo de dato entero con signo de 32 bits en Java. Es igual a 2<sup>31</sup> - 1.
Representación en memoria:
Integer.MAX_VALUE: 0111...1111 (31 unos)
Al añadir uno, ocurre un desbordamiento:
Integer.MAX_VALUE + 1:
0111...1111
+ 0000...0001
------------
1000...0000
El bit más significativo se vuelve uno, lo que en representación con signo indica un número negativo. Para la complemento de dos (la representación estándar de números negativos en Java), 1000...0000 corresponde al menor número negativo que puede ser representado con 32 bits, que es Integer.MIN_VALUE (-2<sup>31</sup>).
Este comportamiento es estándar para tipos enteros con signo en Java y en muchos otros lenguajes que utilizan la complemento de dos.