原碼 反碼 補碼和移碼

2021-08-30 21:58:41 字數 1831 閱讀 2563

各種數值在計算機中表示的形式為機器數,其特點是採用二進位制計數制,數的符號用0或1表示,小數點則隱含,表示不佔位置,這就是機器數的原碼。為了便於運算,帶符號的機器數可採用原碼、反碼、補碼和移碼等不同的編碼方法,機器數的這些編碼方法稱為碼制。在這種表示方法中,最高為是符號位,0表示正號,1表示負號。

原碼就能夠表示乙個二進位制數了,為什麼要使用不同的編碼方法(反碼,補碼)?

有了數值的表示方法就可以對數值進行算數運算。

下面,我們先區分一下機器數和真值:

機器數:乙個數在計算機中的二進位制表示形式,如00001。

真值:除符號位,乙個二進位制數所表示的值。0000 0001的真值=+0000 0001=+1;1000 0001的真值=-0000 0001=-1而不是129

根據運算法則,減去乙個正數等於加上乙個負數,即1-1=1+(-1)=0

(1)10 = (1)10 + (-1)10 = (0)10=0

十進位制的1減十進位制的1等於十進位制的1加十進位制的-1等於十進位制的0,也就是0

原碼:(0000 0001)原+(1000 0001)原 = (1000 0010)原 = (-2) 與上面計算結果不同

當用原碼計算時,讓符號位也參與運算,顯然,結果是錯誤的。

反碼:(0000 0001) 反+(1111 1110)反 = (1111 1111)反 = (1000 0000)原=(-0) 與上面j計算結果不同

我們發現,當用反碼計算時,結果的真值部分是正確的,但是出現了-0的情況,在人們的意識裡,+0和-0是一樣的,但是0帶符號是沒有意義的,還會出現(0000 0000)和(1000 0000)兩種表示方式。

因此,反碼解決了負數加法運算的問題,將減法運算轉換為加法運算,從而簡化運算規則。

補碼:(0000 0001)補+(1111 1111)補=(0000 0000)補=(0000 0000)原=0與上面計算結果相同

使用補碼, 修復了0的符號以及存在兩個表示0的編碼的問題,彌補了反碼的不足。

移碼:原碼、反碼、補碼和移碼存在的差別?

我們以十進位制數+45和-45,機器字長為8舉例:

+45                                         -45

原碼00101101                            10101101

正數原碼=其二進位制數               負數原碼=其二進位制數符號位取反

反碼00101101                            11010010

正數反碼=原碼                           負數反碼=原碼除符號位均取反

補碼00101101                            11010011

正數補碼=原碼                           負數補碼=反碼+1

移碼00101101                             01010011

正數移碼=原碼                           負數補碼=補碼符號位取反

總結:1.正數的原碼、補碼、反碼、移碼均為其二進位制數

2.負數的原碼、反碼、補碼、移碼轉換公式:

反碼=原碼(除符號位外)均取反

補碼=反碼+1

反碼=補碼-1

移碼=補碼符號位取反

當時軟考學習這部分內容的時候,只考慮了原碼、反碼、補碼、移碼之間的相互轉化,沒想過為什麼要有這麼多的編碼方式,今天查了下資料,花了一下午的時間研究,有了一點點成果。沒有無緣無故存在的事物,任何東西存在都是有他的價值的,懂得了這些,以後在學習其他東西的時候也可以問一問自己,為什麼要有這個東西呢?不能為了學習而學習,而是有自己的思考,這樣我們將會學到更多的知識。

原碼 反碼 補碼和移碼

原碼 如果機器字長為n,那麼乙個數的原碼就是用乙個n位的二進位制數,其中最高位為符號位 正數為0,負數為1。剩下的n 1位表示概數的絕對值。例如 x 101011 x 原 00101011 x 101011 x 原 10101011 位數不夠的用0補全。ps 正數的原 反 補碼都一樣 0的原碼跟反碼...

原碼,反碼,補碼和移碼

注意 正數的原 反 補碼都一樣。0的原碼跟反碼都有兩個,因為這裡0被分為 0和 0。如果機器字長為n,那麼乙個數的原碼就是乙個n位的二進位制數有符號數,其中最高位為符號位 正數為0,負數為1。剩下的n 1位為數值位,表示真值的絕對值。凡不足n 1位的,小數在最低位右邊加零 整數則在最高位左邊加零來補...

原碼 反碼 補碼和移碼

數值型資料的表示方法 1.1 進製計數制 數制的基與權 在任一數制中,每乙個數上允許使用的計數符號的個數被稱作該數制的基數。每一位都對應乙個表示該位在數碼中的位置的值,這個值就被稱為數字的權值w。常用的幾種進製 1 2進製 0,1 2 8進製 0,1,2,3,4,5,6,7 3 17進製 0,1,2...