Middle
Kāpēc Integer.MAX_VALUE plus viens ir vienāds ar Integer.MIN_VALUE?
sobes.tech AI
Atbilde no AI
Integer.MAX_VALUE — tas maksimālais 32 bitu zīmēts vesela skaitļa vērtība Java. Tā ir vienāda ar 2<sup>31</sup> - 1.
Atveidojums atmiņā:
Integer.MAX_VALUE: 0111...1111 (31 viens)
Pievienojot vienu, notiek pārsniegums:
Integer.MAX_VALUE + 1:
0111...1111
+ 0000...0001
------------
1000...0000
Visaugstākais bits kļūst par 1, kas zīmēto skaitļu attēlojumā norāda uz negatīvu skaitli. Divu papildinājumu (standarta negatīvu skaitļu attēlojums Java) gadījumā, 1000...0000 atbilst mazākajam negatīvajam skaitlim, ko var attēlot ar 32 bitiem, tas ir Integer.MIN_VALUE (-2<sup>31</sup>).
Šāda uzvedība ir standarta Java zīmētiem veseliem skaitļiem un daudzās citās valodās, kas izmanto divu papildinājumu.