原碼反碼補碼
- 計算機常見數(shù)據(jù)的分類
- 機器數(shù)機器真值
- 原碼
- 反碼
- 補碼
- 為什么需要反碼和補碼
- 使用補碼計算
- 將補碼轉(zhuǎn)換為原碼
計算機常見數(shù)據(jù)的分類
image.png
機器數(shù)及機器數(shù)的真值
機器數(shù)就是數(shù)字在計算機中的 二進制表示形式
機器數(shù)有正負之分, 使用最高位作為符號位,表示正負
使用 ==0== 表示 正 , 使用 ==1== 表示負
+3 = 先確定符號位 0000 0011
+7 = 0000 0111
-9 = 1000 1001
-13 = 1000 1101
機器數(shù)的真值就是機器數(shù)所對應(yīng)的十進制的數(shù)值
1000 1101 = -13
1000 1111 = -15
原碼
==原碼就是符號位加上真值的絕對值==
+9 = 符號位0 有效位0001001 = ==0==000 1001 [原碼]
-14 = 符號位 1 有效位0001110 = ==1==000 1110 [原碼]
14 = 符號位0 有效位000 1110 = ==0==000 1110 [原碼]
==相反數(shù)之間只有第一位不同,1表示負數(shù),0表示正數(shù)==
求-25的原碼?
先求25的原碼,先后將最高為改為1即可!
-25 = 1001 1001
反碼
正數(shù) : 正數(shù)的反碼和原碼相同的
+15 = 0000 1111 [原碼] = 0000 1111 [反碼]
負數(shù): 在原碼的基礎(chǔ)上 , 符號位不變,其余各位,逐位取反 , 0 - > 1 , 1->0
原碼 | ==1== | 0 | 0 | 1 | 1 | 0 | 0 | 1 | -25 = [25 = 16+ 8 + 1 ] |
---|---|---|---|---|---|---|---|---|---|
反碼 | ==1== | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 符號位不變,其余各位逐位取反 |
-25 = 1110 0110 [反]
-36 =
-45 =
-55 =
原碼 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | -36 = 36 = 32 + 4 |
---|---|---|---|---|---|---|---|---|---|
反碼 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | |
原碼 | 1 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | -45 = 45 = 32 + 8+ 4 + 1 |
反碼 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | |
原碼 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | -55 = 55 = 32 + 16 + 4 +2 + 1 |
反碼 | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 0 |
補碼
正數(shù) : 正數(shù)的補碼 原碼 反碼 全部相同
+7 = 0000 0111 [原] = 0000 0111 [反] = 0000 0111 [補]
負數(shù) : 在反碼的基礎(chǔ)上 , 最低位 + 1
原碼 | ==1== | 0 | 1 | 0 | 0 | 0 | 0 | 1 | -33 = 33 = 32 + 1 |
---|---|---|---|---|---|---|---|---|---|
反碼 | ==1== | 1 | 0 | 1 | 1 | 1 | 1 | 0 | |
加1 | ==0== | 0 | 0 | 0 | 0 | 0 | 0 | 1 | |
補碼 | ==1== | 1 | 0 | 1 | 1 | 1 | 1 | 1 |
-46
-66
-37
原碼 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 0 | -46 = 46 = 32 + 8 + 4 + 2 |
---|---|---|---|---|---|---|---|---|---|
反碼 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 1 | |
加1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | |
補碼 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | |
原碼 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | -66 = 66 = 64 + 2 |
反碼 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | |
加1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | |
補碼 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | |
原碼 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 1 | -37 = 37 = 32 + 4 + 1 |
反碼 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 0 | |
加1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | |
補碼 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 1 |
為什么需要反碼和補碼
image.png
高位溢出
image.png
使用補碼計算
53 + 35 =
53 - 18 =
-46 -35 =
35的補碼 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 35 - 17 = 18 |
---|---|---|---|---|---|---|---|---|---|
原碼 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | -17 = 17 = 16 1 |
反碼 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | |
加1 | 1 | ||||||||
-17的補碼 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | |
35的補碼 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | |
0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 18 |
53 + 35 = 88 | |||||||||
---|---|---|---|---|---|---|---|---|---|
53的補碼 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 53 = 32 + 16 + 4 + 1 |
35的補碼 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 35 = 32 + 2 + 1 |
0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 64 + 16 + 8 = 88 | |
53 - 18 = 35 | |||||||||
53的補碼 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | |
-18原碼 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | -18 = 18 = 16 + 2 |
-18的反碼 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | |
加1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | |
-18的補碼 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | |
53的補碼 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | |
0 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 32 + 2 + 1 = 35 | |
-46 -35 = | |||||||||
-46的原碼 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 0 | -46 = 46 = 32 + 8 + 4 + 2 |
-46的反碼 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 1 | |
加1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | |
-46的補碼 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | |
-35的原碼 | 1 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | |
-35的反碼 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 0 | |
加1 | 1 | ||||||||
-35的補碼 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 1 | |
-46的補碼 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | |
-81的補碼 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | ==負數(shù)的補碼,不能直接讀出== |
將補碼轉(zhuǎn)回原碼
==負數(shù)的補碼,不能直接讀出==
==方法:求補碼的補碼==
把負數(shù)的補碼,當(dāng)成原碼,再求補碼
-81的補碼/原碼 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 負數(shù)的補碼,不能直接讀出 |
---|---|---|---|---|---|---|---|---|---|
-81的反碼 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | |
加1 | 1 | ||||||||
1 | 1 | 0 | 1 | 0 | 0 | 0 | 1 | - [64 + 16 + 1 ] = -81 |
==符號位不變,其余各位取反,然后加1==
-35的補碼 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 1 |
---|---|---|---|---|---|---|---|---|
-46的補碼 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 0 |