1.5.1 符號數(shù)的表示方法
表示一個(gè)帶符號的二進(jìn)制數(shù)有3種方法。
1.原碼法
例如:
8位二進(jìn)制符號數(shù)(+45)10和(-45)10,可以如下寫出:
(+45)10=(0 0101101)2
↑ ↑
符號 位數(shù)值
(-45)10=(1 0101101)2
↑ ↑
符號位 數(shù)值
2.反碼法
在計(jì)算機(jī)的早期,曾采用反碼法來表示帶符號的數(shù)。對于正數(shù),
其反碼與其原碼相同。
例如:
(+45)10=(00101101)2
也就是說正數(shù)用符號位與數(shù)值湊到一起來表示。對于負(fù)數(shù),用相
應(yīng)正數(shù)的原碼各位取反來表示,包括將符號位取反,取反的含義就是將
0變?yōu)?,將1變?yōu)?。例如,(-45)10的反碼表示就是將上面
(+45)10的二進(jìn)制數(shù)各位取反:
(-45)10=(11010010)2同樣,可以寫出如下幾個(gè)數(shù)的反碼表示,以便
讀者對照:
(+4)10=(00000100)2
(-4)10=(11111011)2
(+7)10=(00000111)2
(-7)10=(11111000)2
(+122)10=(01111010)2
(-122)10=(10000101)2
3. 補(bǔ)碼法
在微處理機(jī)中,符號數(shù)是用補(bǔ)碼(對2的補(bǔ)碼)來表示的。用補(bǔ)碼法表示帶符號數(shù)的法則是:正數(shù)的表示方法與原碼法和反碼法一樣;負(fù)數(shù)的表示方法為
該負(fù)數(shù)的反碼表示加1。
例如,(+4)10的補(bǔ)碼表示為(00000100)2,而(-4)10用補(bǔ)碼表示時(shí),可先求其反碼表示(11111011)2,而后再在其最低位加1, 變?yōu)?11111100)2 。這就
是(-4)10的補(bǔ)碼表示,即(-4)10=(11111100)2。同樣,我們把前面提到的幾個(gè)數(shù)的補(bǔ)碼表示列在下面供讀者參考:
(+7)10=(00000111)2
(-7)10=(11111001)2
(+122)10=(01111010)2
(-122)10=(10000110)2
1.5.2 補(bǔ)碼的運(yùn)算
例如:
有兩個(gè)二進(jìn)制數(shù)10000100和00001110,當(dāng)規(guī)定它們是不帶符號的數(shù)時(shí),則它們分別表示(132)10和(14)10,將這兩個(gè)二進(jìn)制數(shù)相加:
10000100
+ 00001110
_____________
10010010
在微處理器中,一般都不設(shè)置專門的減法電路。遇到兩個(gè)數(shù)相減時(shí),處理器就自動地將減數(shù)取補(bǔ),而后將被減數(shù)和減數(shù)的補(bǔ)碼相加來完成減法運(yùn)算。
例如,(69)10(26)10=?
可以寫成(69)10+(26)10。利用(69)10的原碼和(26)10 的補(bǔ)碼相加,即可以得到正確的結(jié)果讀者可以自己進(jìn)行驗(yàn)證。
例如:
兩個(gè)帶符號數(shù)(01000001)2(十進(jìn)制數(shù)+65)與(01000011)2(十進(jìn)制數(shù)+67)相加:
01000001
+ 01000011
____________
10000100
再來看兩個(gè)負(fù)數(shù)(10001000)2和(11101110)2的相加情況。
10001000
+ 11101110
____________
101110110
此外,在微處理機(jī)中還會遇到不帶符號數(shù)的運(yùn)算。
例如:
兩個(gè)無符號數(shù)(11111101)2和(00000011)2相加:
11111101
+ 00000011
____________
?。?0000000
1.5.3數(shù)的定點(diǎn)表示和浮點(diǎn)表示
1. 數(shù)的定點(diǎn)表示法
當(dāng)小數(shù)點(diǎn)固定在最高有效位的前面時(shí),定點(diǎn)數(shù)為純小數(shù),其格式如圖所示:
↑ 數(shù)碼 小數(shù)點(diǎn)
2. 數(shù)的浮點(diǎn)表示法
在十進(jìn)制中,一個(gè)數(shù)可以寫成多種表示形式。
例如:
83.125可寫成10^2×0.83125,10^3×0.083125,10^4×0.0083125。同樣,一個(gè)二進(jìn)制數(shù),也可以寫成多種表示形式。
例如:
二進(jìn)制數(shù)1011.10101可以寫成2^4×0.101110101,2^5×0.0101110101,2^6×0.00101110101等等。
可以看出,一個(gè)二進(jìn)制數(shù)能夠用一種普遍的形式來表示:
2^E×F
其中E稱為階碼,F(xiàn)叫做尾數(shù)。我們把用階碼和尾數(shù)表示的數(shù)叫做浮點(diǎn)數(shù),這種表示數(shù)的方法稱為浮點(diǎn)表示法在浮點(diǎn)表示法中,階碼通常為帶符號的整數(shù),
尾數(shù)為帶符號的純小數(shù)。浮點(diǎn)數(shù)的表示格式如下:
↑
小數(shù)點(diǎn)
很明顯,浮點(diǎn)數(shù)的表示不是唯一的。當(dāng)小數(shù)點(diǎn)的位置改變時(shí),階碼也隨 著相應(yīng)改變,可以用多種形式來表示同一數(shù)。 可見,若浮點(diǎn)數(shù)的表示格式為:

1位 R位 1位 P位
則可以看到,用這種編碼所能表示的數(shù)的數(shù)值范圍為: 
前面的二進(jìn)制數(shù)1011.10101可以用包括符號在內(nèi)的8位階碼,16位尾數(shù)的 規(guī)格化形式表示如下:

