筆記 原碼 反碼和補碼的表示方法

2021-07-23 20:05:40 字數 2000 閱讀 5042

原碼

(1) 原碼:在數值前直接加一符號位的表示法。

例如: 符號位 數值位

[+7]原= 0 0000111 b

[-7]原= 1 0000111 b

注意:

a. 數0的原碼有兩種形式: [+0]原=00000000b [-0]原=10000000b

b. 8位二進位制原碼的表示範圍:-127~+127

反碼 (2)反碼:

正數:正數的反碼與原碼相同。

負數:負數的反碼,符號位為「1」,數值部分按位取反。

例如: 符號位 數值位

[+7]反= 0 0000111 b ([+7]原= 0 0000111 b)

[-7]反= 1 1111000 b ([-7]原= 1 0000111 b)

注意:

a. 數0的反碼也有兩種形式,即

[+0]反=00000000b

[- 0]反=11111111b

b. 8位二進位制反碼的表示範圍:-127~+127

補碼 (3)

計算機中數值就以補碼形式儲存,所以用補碼進行運算的。

補碼的表示方法

正數:正數的補碼和原碼相同。

負數:負數的補碼則是符號位為「1」,數值部分按位取反後再在末位(最低位)加1。也就是「反碼+1」。

例如: 符號位 數值位

[+7]補= 0 0000111 b ([+7]原= 0 0000111 b)

[-7]補= 1 1111001 b ([-7]原= 1 0000111 b)

補碼在微型機中是一種重要的編碼形式,請注意:

a. 採用補碼後,可以方便地將減法運算轉化成加法運算,運算過程得到簡化。正數的補碼即是它所表示的數的真值,而負數的補碼的數值部份卻不是它所表示的數的真值。採用補碼進行運算,所得結果仍為補碼。

b. 與原碼、反碼不同,數值0的補碼只有乙個,即 [0]補=00000000b。

c. 若字長為8位,則補碼所表示的範圍為-128~+127;進行補碼運算時,應注意所得結果不應超過補碼所能表示數的範圍。

記住:正數的原碼、反碼、補碼都是一樣的;

負數的反碼就是符號位不變(即為「1」),其餘位取反;

負數的補碼就是「反碼+1」。

2.原碼、反碼和補碼之間的轉換

由於正數的原碼、補碼、反碼表示方法均相同,不需轉換。

在此,僅以負數情況分析。

(1) 已知原碼,求補碼。

例:已知某數x的原碼為10110100b,試求x的補碼和反碼。

解:由[x]原=10110100b知,x為負數。求其反碼時,符號位不變,數值部分按位求反;求其補碼時,再在其反碼的末位加1。

1 0 1 1 0 1 0 0 原碼

1 1 0 0 1 0 1 1 反碼,符號位不變,數值位取反

1 1 0 0 1 1 0 0 補碼

故:[x]補=11001100b,[x]反=11001011b。

(2) 已知補碼,求原碼。

分析:按照求負數補碼的逆過程,數值部分應是最低位減1,然後取反。但是對二進位制數來說,先減1後取反和先取反後加1得到的結果是一樣的,故仍可採用取反加1的方法。

例:已知某數x的補碼11101110b,試求其原碼。

解:由[x]補=11101110b知,x為負數。求其原碼表示時,符號位不變,數值部分按位求反,再在末位加1。

1 1 1 0 1 1 1 0 補碼

1 0 0 1 0 0 0 1 符號位不變,數值位取反

1 0 0 1 0 0 1 0 原碼

例子:

#include

int main()

//-2

//假設int佔兩個位元組, 正數的原碼反碼補碼都相同均相同:i記憶體中存放形式為 0000 0001

//那麼 ~i = 1111 1110 這個數存放到j中,這裡是補碼的形式

//所以j的原碼是 1000 0010 即 -2 ,所以輸出-2

整數表示 補碼 原碼 反碼

一 補碼 最常見的有符號數的計算機表示方式就是補碼 two s complement 形式。在這個定義中,將字的最高位解釋為負權 negative weight 用函式 最高有效位也成為符號位,他的權重為 2 w 1 是無符號表示中權重的負數。符號位被置為1時,表示值為負,而當設定為0,值為負數。這...

原碼 反碼和補碼

數值有正負之分 計算機就用乙個數的最高位存放符號 0為正 1為負 這就是機器數的原碼了 假設機器能處理的位數為 8.即字長為 1byte,原碼能表示數值的範圍為 127 0 0 127 共256個.有了數值的表示方法就可以對數進行算術運算 但是很快就發現用帶符號位的原碼進行乘除運算時結果正確 而在加...

原碼 反碼 和 補碼。

這裡只講下自己對反碼的理解。大家都知道使用反碼表示負數有兩個優點,1.可以使得減法可以和加法一樣。2.符號位也參與了運算。那這是為什麼呢?下面可以進行一些簡單的數學推導 根據反碼定義,對於負數,反碼是除符號為以外取反 1。例如,4 變換步驟如下。a 4 0 000 0100 b 取反 0 111 1...