1. 程式人生 > >資料表示——原碼、反碼、補碼、移碼

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

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

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

一、原碼、反碼、補碼

三種表示法的轉換過程如下:


說明:

 特別的,在原碼中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。

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

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