原碼,反碼和補碼學習報告

來源:互聯網
上載者:User

標籤:運算   沒有   重要   避免   錯誤   絕對值   就是   缺陷   科學   

        放假這幾天,重新學習了原碼反碼和補碼的相關知識。對原碼反碼和補碼有了重新的認識。所以寫了這篇部落格,作以總結。

        學習原碼反碼補碼時主要是看了葉子秋前輩的部落格(http://www.cnblogs.com/zhangziqiu/ )。對於原碼反碼補碼的知識寫的非常詳細,也引用了很多例子。通過前輩的部落格,瞭解到一個叫做機器數的東西,就是我們常用的位元,比如在8位二進位中,數字1的機器數就是00000001。通過真值,明白一長串二進位符並不完全代表數字。開頭的01表示這個·資料的正負。

       原碼,就是符號位加上真值的絕對值, 用第一位表示符號, 其餘位表示數值. 如果是8位二進位“+1”表示為00000001,“-1”表示為10000001。這樣得出原碼的取值範圍是[-127,127]。但原碼有一個問題。符號位參與運算會使整個數值發生錯誤會使1-1=-1.所以科學家開始思考,試圖找到一種正確的方法,反碼就出現了。

       反碼,顧名思義,把原碼反過來。因為機器數只有01,用所有的1代替原碼中的零,這樣“-1”就可以表示為11111110.同樣,反碼也有自身的缺陷,在運算中會出現+0,-0的現象。我們都知道0隻有一個,沒有正負之分。為了這一個看似小,卻也十分重要的問題。補碼應運而生。

      補碼,也很好理解,就是補充。在反碼的基礎上進行補充,進行+1.這樣一做,就完美的避免了+-0的問題。這也相當於用-128代替-0,因此補碼的範圍就是[-128,127].相比於原碼和補碼,可以儲存的資料更多,減少了很多不需要的問題。也正是因為電腦的二進位運算,才會產生反碼,補碼這種針對於負數的解決方案。從而使得資料運算可以更加準確。

原碼,反碼和補碼學習報告

聯繫我們

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