Middle
Zašto je Integer.MAX_VALUE plus jedan jednako Integer.MIN_VALUE?
sobes.tech АИ
Одговор од АИ
Integer.MAX_VALUE — ovo je maksimalna vrednost za 32-bitni potpisani celobrojni tip u Javi. Jednako je 2<sup>31</sup> - 1.
Predstavljanje u memoriji:
Integer.MAX_VALUE: 0111...1111 (31 jedinica)
Kada se doda jedan, dolazi do prelivanja:
Integer.MAX_VALUE + 1:
0111...1111
+ 0000...0001
------------
1000...0000
Najveći bit postaje jedan, što u potpisanom predstavljanju ukazuje na negativan broj. Za dvokomponentno dopunjavanje (standardno predstavljanje negativnih brojeva u Javi), 1000...0000 odgovara najmanjem negativnom broju koji može biti predstavljen sa 32 bita, tj. Integer.MIN_VALUE (-2<sup>31</sup>).
Ovo ponašanje je standardno za potpisane celobrojne tipove u Javi i mnogim drugim jezicima koji koriste dvokomponentno dopunjavanje.