簡單來說:
1)當真數為正數時,原碼、反碼和補碼的表示形式相同,符號位為 "0",數值位和真值相同;
2)當真值位負數時,原碼、反碼和補碼的表示形式不相同,符號位為 "1",並且對於數值部分:補碼是原碼的”取反加1“,反碼是原碼的“每位取反”;
3)對於同一個真值,補碼和反碼只差一個符號位;
4)移碼只表示整數
5)對於不同的機器數表示 ±0,其形式不同:
[+0]原 ≠ [-0]原
[+0]補 = [-0]補
[+0]反 ≠ [-0]反
[+0]移 = [-0]移
大致的基本知識就是上述這些,如果讀者還想了解更多的話,請耐心閱讀下面的內容;
如果還滿意的話,麻煩為這篇文章點個贊!!!謝謝!!!
原碼的定義:
[X]源 =
整數時:
0 ,X ( 2n > X ≥ 0 )
2n-X ( 0 ≥ X > -2n )
X為真值,n為整數的位數
例如:
x = +1110 [x]原 = 0,1110
x = -1110 [x]原 = 24 - (-1110) = 1,1110
小數時:
X ( 1 > X ≥ 0 )
1-X ( 0 ≥ X >-1 )
X為真值
例如:
x = +0.1101 [x]原 = 0.1101
x = -0.1101 [x]原 = 1 - (-0.1101) = 1.1101
小測試:
1.已知[x]原 = 1.0011 求x
解:x = 1 - [x]原 = 1 - 1.0011 = -0.0011
2.已知[x]原 = 1,1100 求x
解: x = 24 - [x]原 = 10000 - 1,1100 = -1100
3.已知[x]原 = 0.1101 求x
解:x = +0.1101
4.求 x=0 的原碼
解: 設 x = +0.0000 [+0.0000]原 = 0.0000
設 x = -0.0000 [-0.0000]原 = 1.0000
故:[-0]原 ≠ [+0]原
對於整數:[+0]原 = 0,0000
[-0]原 = 1,0000
總結:
優點:表示方法簡單,直觀
缺點:不適合運用於加減運算,需要判斷正負、確定前后位置、判斷結果符號····
規定:用小數點 "." 將符號位和數值位隔開的機器數一律為小數;
用逗號 "," 將符號位和數值位隔開的機器數一律位整數; (參照上面例子)
補碼:
補數表示法:
一個負數可以用其正的補數來代替,這個正的補數可以用此負數加模來求得。
一個正數和負數互為補數時,他們的絕對值之和就是模。
正數的補數就是它本身。
性質:補碼的和等於和的補碼
6 - 3 = [ [6-3] ]補 = [ [6] + [-3] ]補 = [0,110 + 1,101]補
= [10,011]補
= [ 0,011 ]補
= 3
補碼的定義:
[X]補 =
整數時:
0,X ( 2n > X ≥ 0 )
2n+1 + X ( 0 > X ≥ -2n )
(mod 2n+1)
X為真值,n為整數位數(不包括符號位)
例如:
x = +1010 求x的補碼。
解:[x]補 = 0,1010
x = -1011000 求x的補碼。
解:[x]補 = 27+1 = (-1011000)
= 100000000
- 1011000
1,0101000
小數時:
X ( 1 > X ≥ 0 ) (X為真值)
2+X (0 > X ≥ -1 ) (mod 2)
例如:
x = +0.1110 [x]補 = 0.1110
x = -0.1100000 [x]補 = 2 + (-0.1100000)
=10.0000000
- 0.1100000
1.0100000
總結補碼計算方法:
1.補碼 = 反碼 + 1
2.負數補碼求法:符號位不變,數值位從左到右依次取反,最右邊的1及其后的0不變
例如: x = -0.1100100 ---> x = 1.0011100
3.補碼的補碼是原碼

移碼:
補碼表示很難判斷其真值的大小
| 十進制 | 二進制 | 補碼 |
| x = +21 | +10101 | 0,10101 |
| x = -21 | -10101 | 1,01011 |
| x = +31 | +11111 | 0,00001 |
| x = -31 | -11111 | 1,00001 |
x + 25
| x = +21 | +10101 + 100000 | =110101 |
| x = -21 | -10101 + 100000 | =001011 |
| x = +31 | +11111 +100000 | =111111 |
| x = -31 | -11111 + 100000 | =000001 |
1的個數越多就大
移碼的定義:
[X]移 = 2n + X (2n > X ≥ -2n)
X為真值,n為整數的位數。
移碼和補碼數值位相同,符號位相反
小測試:
x = 10100 [x]移 = 25 + 10100 = 1,10100
x = -10100 [x]移 = 25 - 10100 = 0,01100
特點:
1.[+0]移 = [-0]移
2.當x=5事,最小真值(-25 = -100000) 的移碼全0 = 25 - 100000 = 000000
