電腦中原碼,反碼,補碼之間的關係

來源:互聯網
上載者:User

標籤:二進位   不能   符號   總結   span   核心   等於   指標   是什麼   

  最近在刷C和指標的題目,刷到一題需要補碼的知識,在自己腦子裡面一搜羅,發現概念已經有些模糊了。剛好播客的申請通過了,就來試試水吧!

 

  我們平時一起共事小夥伴總喜歡開一個玩笑,我給你一把沙子你給我造一台電腦出來! 想想也確實,電腦的核心元件也就是沙子變來的,難道這就是道家的三生萬物的思想?

呵呵,扯遠了啊。

  言歸正傳,沙子可以說組成了電腦的體魄,那電腦的思想,靈魂本質是由什麼組成的呢? 今天的主角來了:二進位!這篇文章我們不說那些太虛太高大上的東西(實際上我也說不出什麼233)。就簡單說說 數字 在電腦內部是怎麼用二進位表示的吧。

  首先提幾個概念: 原碼,反碼,補碼 

    原碼是什嗎?

      原碼就是早期用來表示數位一種方式: 一個正數,轉換為二進位位就是這個正數的原碼。負數的絕對值轉換成二進位位然後在高位補1就是這個負數的原碼

      舉例說明:

      int類型的 3 的原碼是 11B(B表示二進位位), 在32位機器上佔四個位元組,那麼高位補零就得:

      00000000 00000000 00000000 00000011

      int類型的 -3 的絕對值的二進位位就是上面的 11B 展開後高位補零就得:

      10000000 00000000 00000000 00000011      

      但是原碼有幾個缺點,零分兩種 +0 和 -0 。很奇怪是吧!還有,在進行不同符號的加法運算或者同符號的減法運算的時候,不能直接判斷出結果的正負。你需要將兩個值的絕對值進行比較,然後進行加減操作 ,最後符號位由絕對值大的決定。於是反碼就產生了。

    

    反碼是什麼 ?

      正數的反碼就是原碼,負數的反碼等於原碼除符號位以外所有的位取反

      舉例說明:

      int類型的 3 的反碼是

      00000000 00000000 00000000 00000011

      和原碼一樣沒什麼可說的

      int類型的 -3 的反碼是

      11111111 11111111 11111111 11111100

      除開符號位 所有位 取反

      解決了加減運算的問題,但還是有正負零之分,然後就到補碼了

    

    補碼是什嗎?

      正數的補碼與原碼相同,負數的補碼為 其原碼除符號位外所有位取反(得到反碼了),然後最低位加1.

      還是舉例說明:

      int類型的 3 的補碼是:

      00000000 00000000 00000000 00000011

      int類型的 -3 的補碼是

      11111111 11111111 1111111 11111101

      就是其反碼加1

 

最後總結一下:

    正數的反碼和補碼都與原碼相同。

    負數的反碼為對該數的原碼除符號位外各位取反。

    負數的補碼為對該數的原碼除符號位外各位取反,然後在最後一位加1  

 

    

各自的優缺點:

    原碼最好理解了,但是加減法不夠方便,還有兩個零。。

    反碼稍微困難一些,解決了加減法的問題,但還是有有個零

    補碼理解困難,其他就沒什麼缺點了

      

 

  

電腦中原碼,反碼,補碼之間的關係

聯繫我們

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