無符號數
- 表示範圍:0-65535
有符號數
- 表示範圍: -32768~+32767
- 正值:0
- 負數:1
有符號數(小數)
小數:+0.1011表示:
01011 小數點位置在0.1011
小數:-0.1011表示:
1 1011小數點位置在1.1011
有符號數(整數)
+1100 表示:
01100小數點位置在01100.
-1100表示:
11100小數點位置在11100.
0+0=0 | 0-0=0 | 0*0=0 |
---|---|---|
0+1=1 | 1-1=0 | 0*1=0 |
1+1=0 | 1-0=1 | 1*0=0 |
1+1+1=1 | 0-1=1 | 1*1=1 |
真值
- 把帶有"+“ “-”符號的數稱爲真值
機器數
- 把符號數字化的數稱爲機器數
原碼
原碼又稱爲帶符號的絕對值表示
- 整數的符號位與數值位用(逗號)隔開
- 小數的符號位與數值位用(小數點)隔開
- 例子:
- x=+1110時,原碼【x】原=0,1110
- x=-1110時,原碼【x】原=1,1110
- x=0.1101時,原碼【x】原=0.1111
- x=-0.1101時,原碼【x】原=1.1101
- 有原碼求真值:
- 原碼【x】原=1.0011,得到 x=-0.0011
- 原碼【x】原=1,1100,得到 x=-1100
- 原碼【x】原=0.1101,得到 x=0.1101
原碼中的“零”有兩種表示方式: - 【+0.0000】原=0.0000
- 【-0.0000】原=1.0000
補碼
只要確定了模,就可以找到一個與負數等價的正數(改正數就是負數的補數),這樣就可以把減法運算用到加法實現
- 正數相對於“模”的補數就是正數本身
- +7 = +7 (mod 10)
- 一個正數和一個負數互相爲補數時,他們倆的絕對值和就是模數
- -3 = +7 (mod 10)所以補數= |-3| + |7|=10
- 例如:
- x=+1010 【x】補=0,1010(正數補數爲自身)
- x=-1101 【x】補=1,0011 即(負數: 取反+1)
- x=0.1001,【x】補=0.1001(正數補數爲自身)
- x=-0.0110,【x】補=1.1010(負數: 取反+1)
補碼中的0只有一種表達方式:【+0】補=【-0】補=0.0000
已知補碼求真值:
(注意先判斷正負,負數取反,正數不改變)
- [x]補=1.0101 x=-0.1011(原碼除去符號位取反,再+1)
- [x]補=1,1110 x=-0010(原碼除去符號位取反,再+1)
- [x]補=0.1101 x=0.1101(正數不改變)
反碼
x爲整數時:
- x=+1101時,反碼=0,1101(正數反碼還是本身)
- x=-1101時,反碼=1,0010(負數反碼,除符號位取反)
x爲小數時:
- x=+0.0110時,反碼=0.0110
- x=-0.0110時,反碼=1.1101
反碼中的0有兩種表達方式:
- 【+0.0000】反=0.0000
- 【-0.0000】反=1.1111
移碼
利用二進制數,比較十進制數21和-21的大小
答:
x=21,對應的二進制數爲+10101,【x】補=0,10101
x=-21,對應的二進制數爲-10101,【x】補=1,01011
如果按照補碼進行比較,則101011 > 010101,答案錯誤
x=10101 加上2的5次方 10101+100000=110101
x=-10101加上2的5次方 -10101+100000=001011
所以 110101>001011
移碼: [x]移=2的n次方 + x
例如:
- x=10100 則在【x】移=2*5+ x=100000+10100=1,10100
- x=-10100 則在【x】移=2*5+ x=100000-10100=0,01100
- 同一個真值的移碼和補碼僅相差一個符號位
- x=-10100 則在【x】補=1,01100 【x】移=0,01100