Middle
Kodėl Integer.MAX_VALUE plius vienas yra lygus Integer.MIN_VALUE?
sobes.tech AI
Atsakymas iš AI
Integer.MAX_VALUE — tai didžiausia reikšmė 32 bitų ženklintam sveikajam skaičiui Java kalboje. Ji lygi 2<sup>31</sup> - 1.
Atvaizdavimas atmintyje:
Integer.MAX_VALUE: 0111...1111 (31 vienetas)
Pridėjus vieną, įvyksta perteklius:
Integer.MAX_VALUE + 1:
0111...1111
+ 0000...0001
------------
1000...0000
Didžiausias bitas tampa 1, kas rodo neigiamą skaičių ženklintame atvaizdavime. Dvejų papildymo (standartinis neigiamų skaičių atvaizdavimas Java) atveju, 1000...0000 atitinka mažiausią neigiamą skaičių, kurį galima atvaizduoti 32 bitais, t.y., Integer.MIN_VALUE (-2<sup>31</sup>).
Šis elgesys yra standartinis ženklintų sveikųjų tipų Java ir daugelyje kitų kalbų, naudojančių dvejų papildymą, atveju.