資料表示——原碼、反碼、補碼、移碼,反碼補碼

來源:互聯網
上載者:User

資料表示——原碼、反碼、補碼、移碼,反碼補碼

     到目前為止,我們學習了十進位、二進位、八進位、十六進位等用來代表實際數值的數,稱為真值,這些數我們再日常生活中都會使用到,那麼在電腦中數值是怎麼來表示的呢?

          數在電腦中的表示形式統稱為機器數。電腦中處理資料及運算都是採用二進位,通常規定機器數用八位二進位表示。實用的資料有正數和負數,因為電腦只能表示0、1兩種狀態,資料的正號“+”或負號“-”,在電腦裡就用一位二進位的0或1來區別,通常放在最高位,成為符號位。 符號位元值化之後,為能方便的對機器數進行算術運算、提高運算速度,電腦設計了多種符號位與數值一起編碼的方法,最常用的機器數表示方法有:原碼、反碼、補碼和移碼,下面就分別介紹一下它們的表示方法。

 

一、原碼、反碼、補碼

           三種標記法的轉換過程如下:



說明:

 特別的,在原碼中0有兩種表示方式:[+0]原=0000000,[-0]原=1000000。

 在反碼錶示中,0也有兩種表示形式:[+0]反=0000000,[-0]反=11111111。

 在補碼錶示中,0有唯一的編碼:[+0]補=0000000,[-0]補=0000000。


二、移碼

           因為個人移碼理解有點困難,so單獨解釋一下:

           移碼錶示法是在數X上增加一個位移量來定義的,常用來表示浮點數中的階碼,所以是整數。如果機器字長為n,規定位移量為2^(n-1)。若X是整數,則[X]移=2^(n-1)+X

     則[+45]=+0101101+10000000,   [-45]=-0101101+10000000=01010011

     實際上由此可推出,在位移2^(n-1)的情況下,只要將補碼的符號位取反便可獲得相應的移碼錶示。

      


說明:在移碼錶示中,0也編碼是相同的,[+0]移=1000000,[-0]移=1000000。


          電腦之所以這些編碼方法是為了便於運算,提高運算速度。四種表示方法其實是層層遞進的,即會求十進位的二進位表示,記住符號位的正負表示,知道怎麼遞進的它們之間的關係。

          這篇部落格只介紹了原碼、反碼、補碼、移碼的表示方法,但是為什麼電腦要這樣表示資料呢?請小編下回分析……( ^_^ )



十進位數-113的原碼錶示,反碼錶示,補碼錶示與移碼錶示

原碼11110001 符號位是1,求113的原碼。除2記下餘數,商再除2,記下餘數。最後餘數從後往前就是原碼,再加上符號位
2 113
2 56 1
2 28 0
2 14 0
2 7 0
2 3 1
2 1 1
2 0 1 所以原碼為1110001,加上符號位 11110001
反碼10001110,原碼除符號位,其餘按位取反,符號位不變。
補碼10001111,反碼加1。
移碼00001111,補碼的符號位取反。

建議這類問題下次去編程模組問,數學模組懂電腦的不一定能看見這類問題。
 
原碼 反碼 補碼 移碼

註:D為十進位尾標,B為二進位尾標
-27/32 = -0.84375D = -0.11011B
(8位)原碼:1.1101100
反:1.0010011
補:1.0010100
小數無移碼
 

聯繫我們

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