[底層] 為什麼Integer.MIN_VALUE-1會等於Integer.MAX_VALUE

來源:互聯網
上載者:User

標籤:

Integer.MIN_VALUE-1 = Integer.MAX_VALUE

Integer.MAX_VALUE+1 = Integer.MIN_VALUE

 

實際上這裡是電腦底層的位元運算法則問題[1]

電腦底層採用了補碼來進行加減乘除的運算,好處是符號位參與運算.

舉上面兩個例子來說明問題。

Integer.MIN_VALUE:  $10000000000000000000000000000000$

Integer.MAX_VALUE: $01111111111111111111111111111111$

-1:                          $11111111111111111111111111111111$

一、

Integer.MIN_VALUE - 1 = Integer.MIN_VALUE + (-1)

  $10000000000000000000000000000000$

+  $11111111111111111111111111111111$

---------------------------------------------------

 $1,01111111111111111111111111111111$

捨棄最高位的進位,所以得到的就是Integer.MAX_VALUE

 

二、

Integer.MAX_VALUE + 1= Integer.MIN_VALUE

  $01111111111111111111111111111111$

+ $00000000000000000000000000000001$

---------------------------------------------------

  $10000000000000000000000000000000$  

 

除了補碼之外,還有反碼、移碼等等。

1、反碼

整數是它本身,負數是符號位不變數值位求反

2、移碼

主要用於浮點數的表示當中的階碼

相應的補碼符號位求反就是移碼

 

[1] http://wenku.baidu.com/link?url=8ques5GUmTWrFybpKKFQG_bstr-7A4EdLatGIqcFMaL9xtDBgrSrO0GHEvQ5MZgld4u1leMs04wvqsYnnQ9CS_ryY1gu7YyW0n5pdni8_Qy

[2] http://blog.csdn.net/meng4411yu/article/details/8668625

[底層] 為什麼Integer.MIN_VALUE-1會等於Integer.MAX_VALUE

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.