Sobes.tech
Middle

რატომ არის Integer.MAX_VALUE პლუს ერთი თანაბარი Integer.MIN_VALUE-ს?

sobes.tech AI

პასუხი AI-სგან

Integer.MAX_VALUE — ეს არის მაქსიმალური მნიშვნელობა 32-ბიტიანი ნიშნით განკუთვნილი მთელი რიცხვის ტიპისთვის Java-ში. იგი თანაბარია 2<sup>31</sup> - 1-ს.

შენახვა მეხსიერებაში:

Integer.MAX_VALUE: 0111...1111 (31 ერთეული)

როდესაც ერთს ვამატებთ, ხდება გადახრა:

Integer.MAX_VALUE + 1:

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

მაღალი ბიტი ხდება ერთი, რაც ნიშნით წარმოდგენაში მიუთითებს უარყოფით რიცხვზე. ორი კომპლემენტის დამატებით (სტანდარტული წარმოდგენა უარყოფით რიცხვებზე Java-ში), 1000...0000 შეესაბამება ყველაზე პატარა უარყოფით რიცხვს, რომელიც შეიძლება წარმოდგენილი იყოს 32 ბიტით, ანუ Integer.MIN_VALUE (-2<sup>31</sup>).

ეს ქცევა სტანდარტულია Java-სა და ბევრ სხვა ენაში, რომლებიც იყენებენ ორი კომპლემენტის დამატებას.