原碼,反碼,補碼表示法


首先,我們引入一些相關的概念.

機器數: 數據在計算機中的表示形式。 數的符號存在最高位(左邊),0代表正數,1代表負數。分成有符號和無符號兩種。

A.對於無符號的數值,整個都是數值區。

B. 對於有符號的數值,數據分成兩部分:符號位+數值區。

小數點:隱含表示,不占位置。

A. 對於無符號數值,小數點在最左邊,代表是純小數。在右邊,代表純整數。

B. 對於有符號的數值,小數點在數值區最左邊,代表是純小數。在數值區右邊,代表純整數。

真值:機器數對應的真實數值。

 

為了方便計算,帶符號的機器數分成原碼、反碼和補碼的不同編碼方法。

1. 原碼

左邊的第一位表示符號(0為正,1為負), 其余位表示數值.

真值變成原碼的轉換方法:

(1)取真值的絕對值的2進制表示。

(2)左邊第一位添加符號。  

例如:

考慮一個字節的存儲,-127, 絕對值為127的2進制表示為 0111 1111, 添加符號(1)為 1111 1111。

當真值=0的時候,[+0]可以表示成 0000 0000, [-0]可以表示成 1000 0000。

2. 反碼

反碼的表示方法是:

(1)如果是正數,反碼與原碼一樣。

(2)如果是負數,反碼是符號位不變,原碼其余各個位取反.

例如:

[+127]=0111 1111, [+127]=0111 1111,

[-127]=1111 1111, [-127]=1000 0000。

[+0]=0000 0000, [+0]=0000 0000,

[-0]=1000 0000, [-0]=1111 1111。

3. 補碼

補碼表示方法:

(1)如果是正數, 補碼與原碼一樣。

(2)如果是負數,在反碼的基礎上+1。

例如:

[+127]=0111 1111, [+127]=0111 1111,[+127]=0111 1111

[-127]=1111 1111, [-127]=1000 0000,[-127]=1000 0001

[+0]=0000 0000, [+0]=0000 0000,[+0]=0000 0000,

[-0]=1000 0000, [-0]=1111 1111,[-0]=0000 0000。

我們發現,原碼、反碼、補碼對於正數和+0都是一樣的。對於0,補碼的表示唯一。

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM