Sobes.tech
Middle

Miks Integer.MAX_VALUE pluss üks on võrdne Integer.MIN_VALUE-ga?

sobes.tech AI

Vastus AI-lt

Integer.MAX_VALUE — on maksimaalne väärtus 32-bitisel märgitud täisarvul Java-s. See on võrdne 2<sup>31</sup> - 1-ga.

Mälu esitus:

Integer.MAX_VALUE: 0111...1111 (31 ühte)

Kui lisada üks, toimub ülevoog:

Integer.MAX_VALUE + 1:

  0111...1111
+ 0000...0001
------------
  1000...0000

Kõige olulisem bitt muutub üheks, mis märgib märgitud esitusviisis negatiivset arvu. Kahe täiendamise (Java-s standardne negatiivsete arvude esitusviis) korral vastab 1000...0000 kõige väiksemale negatiivsele arvule, mida saab 32-bitiga esitada, ehk Integer.MIN_VALUE (-2<sup>31</sup>).

See käitumine on standardne Java ja paljude teiste keelte jaoks, mis kasutavad kahe täiendamise süsteemi.