java中原碼、反碼與補碼的問題分析_java

來源:互聯網
上載者:User
1.原碼、反碼和補碼定義

1.原碼

將最高位作為符號位(以0代表正,1代表負),其餘各位代表數值本身的絕對值(以二進位表示)。
為了簡單起見,我們用1個位元組來表示一個整數。
     +7的原碼為: 00000111
     -7的原碼為: 10000111

2.反碼

一個數如果為正,則它的反碼與原碼相同;一個數如果為負,則符號位為1,其餘各位是對原碼取反。
為了簡單起見,我們用1個位元組來表示一個整數:
     +7的反碼為:00000111
     -7的反碼為: 11111000

3.補碼

補碼:一個數如果為正,則它的原碼、反碼、補碼相同;一個數如果為負,則符號位為1,其餘各位是對原碼取反,然後整個數加1。為了簡單起見,我們用1個位元組來表示一個整數:
+7的補碼為: 00000111
-7的補碼為: 11111001

已知一個負數的補碼,將其轉換為十進位數,步驟:
      1、先對各位取反;
      2、將其轉換為十進位數;
      3、加上負號,再減去1。
      例如:
      11111010,最高位為1,是負數,先對各位取反得00000101,轉換為十進位數得5,加上負號得-5,再減1得-6。

2.常見問題

我把int a=232;進行強轉為byte類型時為什麼是負數???

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.