計算機系統結構 學習筆記 浮點資料表示

2022-08-09 13:27:25 字數 3218 閱讀 1517

浮點數的資料表示浮點數n可以用如下方式表示

n=m×rm^e

在浮點資料表示方式中有6個引數:

尾數的值m;階碼的值e;尾數的基rm;階碼的基re;尾數長度p;階碼長度q。

浮點數在資料儲存單元中的存放方式如圖所示。

原碼:機器數的最高一位代表符號,0代表正號,1代表負號,以下各位給出數值絕對值的表示法。零有正零和負零兩種表示形式。

補碼:機器數的最高一位代表符號,0代表正號,1代表負號。若為正數,數的補碼和原碼相同。若為負數,以下各位為原碼按位求反後,最後一位加1來表示。零只有一種表示形式,即原碼中的正零。負零的表示,當為純小數,則為-1。當為純整數,則為2^n,n為數值位的位數。

移碼:以1位符號位和n位數值位的整數為例,移碼由數值自身於2^n相加得到。

規格化浮點數:以尾數採用補碼方式為例,尾數的最高位和符號位相反。符號位為0,尾數最高位為1。符號位為1,尾數最高位為0。

在大多數《計算機組成原理》課程中講解浮點數表示時,側重浮點數在運算器中執行的過程,給出的規格化以雙符號位為原則。在《計算機系統結構》課程中,浮點數的表示尾數符號為單符號位表示形式。根據碼制和正負數分類,總結出規格化的定義,推算尾數的取值範圍,這樣就不必死記硬背給出的表數範圍表。

下面以尾數基值rm取2和16,尾數用原碼或補碼、純小數表示,階碼用移碼、整數表示的規格化浮點數為例,研究表數範圍。

1.尾數採用原碼的取值範圍

規格化定義1:當浮點數尾數採用原碼、純小數形式表示時,規格化的浮點數尾數最高位為非零。

例1:浮點數尾數基值rm=2,p=8,q=6,整個浮點數長度為:p+q+2=16位二進位制。正尾數取值範圍為0.10000000b……0.11111111b,對應十進位制數為2^-1……1-2^-8;負尾數取值範圍為1.10000000b……1.11111111b,對應十進位制數為-(2^-1)……-(1-2^-8)正負尾數取值完全對稱。

例2:浮點數尾數基值rm=16=2^4,p=2,q=6,整個浮點數長度為:p^4+q+2=16位二進位制。正尾數取值範圍為0.10h……0.ffh,對應的十進位制數為16^-1……1-16^-2;負尾數取值範圍為1.10h……1ffh,對應的十進位制數為-(16^-1)……-(1-16^-2)。

結論1:尾數用原碼、純小數時規格化尾數的取值範圍為:最大正尾數1-rm^-p,最小正尾數rm^-1,最大負尾數-(rm^-1),最小負尾數-(1-rm^-p)。

2.尾數採用補碼的取值範圍

規格化定義2:當浮點數尾數採用補碼、純小數形式表示時,規格化正尾數的浮點數尾數最高位為非零。

根據補碼定義可知,正數的補碼和原碼相同,所以上面的例子在尾數中採用補碼、純小數形式表示的規格化正尾數取值範圍和原碼表示形式相同。

規格化定義3:當浮點數尾數採用補碼、純小數形式表示時,規格化負尾數的浮點數尾數最高位不能為1-rm^-1。

在浮點數尾數基值rm=2的例1中,規格化補碼表示範圍為1.00000000b……1.01111111b,根據補碼定義可以得到所有可以表示的尾數值,最大負尾數的補碼形式為1.01111111b,對應十進位制為2^-1+2^-8。最小負尾數的補碼形式為1.00000000b,對應的十進位制為-1。在浮點數尾數基值rm=16的例子中,根據定義3,尾數最高位不能取16^-1,規格化補碼負尾數的取值範圍為1.00h……1.efh,最大負尾數的補碼形式為1.efh,對應的十進位制數為16^-1+16^-2,最小負尾數的補碼形式為1.00h,對應的十進位制數為-1。

結論2:尾數用補碼、純小數時規格化尾數的取值範圍為:最大正尾數1-rm^-p,最小正尾數rm^-1,最大負尾數-(rm^-1+rm^-p),最小負尾數-1。

3.浮點數階碼的取值範圍

浮點數表示中階碼通常採用基值為2,以移碼形式表示的純整數。由於移碼的碼制在相關課程中僅僅給出定義和使用場所,沒有相關的運算聯絡,在用移碼表示浮點數階碼時,非常容易混淆,下面將介紹一種淺顯易懂的表示方法。

將浮點數的q位階碼長度和1位符號位拼接在一起,構成q+1位的二進位制數,採用此q+1位二進位制數表示乙個無符號的機器數,即浮點數階碼的移碼表示形式,表示範圍為0……2^(q+1)-1。給出乙個q+1位的移碼值,則對應的十進位制數為:移碼-2^q。相反,給出乙個合法的階碼值,通過「階碼值」+2^q得到階碼在浮點數儲存單元中移碼的存放方式。

在例1中,階碼長度為8,加上1位階符,則階碼的移碼表示形式000000000……111111111,對應階碼的十進位制數取值範圍為0-2^8……2^9-1-2^8,任意給出階碼取值範圍中的乙個數,在階碼在資料儲存單元中的移碼存放方式,即可得到。同樣,在例2中,加上一位階符的階碼的表示形式0000000……1111111,對應的十進位制數為0-2^6……2^7-1-2^6。

結論3:階碼採用移碼表示的取值範圍為:最大階碼re^q-1,最小階碼-re^q。

階碼採用移碼表示好處通過上表也可以得到很好的驗證——保證浮點零與機器零的一致性,有利於軟硬體設計!(在除移碼之外的所有碼制中,最小負數都不是全0(包括符號位))

例題:已知乙個字長為32位的機器,尾數用純小數、原碼表示,rm=2,p=24;階碼用整數、移碼表示,re=2,q=6;其格式最左邊為尾數符號位,最右邊位尾數,中間放階符和階碼。請問浮點數c2d00000表示十進位制數值是多少?這樣的機器浮點數表示範圍是多大?並用二進位制寫出它的浮點數0。

[解答]:

c2d00000(

1100 0010

1101 0000 0000 0000 0000 0000

)移碼表示的階碼1000010(最高位為階符)-->轉成對應的十進位制數0000010(+2)

尾數顯然易得-->  -0.8125

故所得十進位制數值為-0.8125*2^(2^2)=13

結合前面討論的結論1和結論3

這樣的機器規格化浮點數n表數範圍為:

rm^(-1)*rm^ (-re^q) =

即2^(-1)*2^(-2^6)=

二進位制浮點0表示:

00000000 0000 0000 0000 0000 0000 0000

【附:一文一圖】

計算機系統 浮點數

浮點數 1.二進位制小數 二進位制小數點右側的 位 表示2的分數冪次 負冪 竅門 小數部分寫成分數,分母為2 k,k為小數字,分子為小數部分二進位制的值。即 101 5 8 0.625 表示範圍 只能精確表示諸如x 2 k的數 其它的值只能近似表示 2.ieee浮點數 數字形式 符號位s 確定了這個...

計算機系統中的浮點數

人類世界的小數的表示形式 1 我們最習慣的小數表示形式是十進位制,形式為 它的值為 2 小數的二進位制表示法,形式為 它的值為 ieee浮點標準 在計算機系統中,因為有位元組的限制 c語言中float型別佔4位元組,double型別佔8位元組 小數的表示要複雜的多。ieee制定的浮點標準得到了所有的...

計算機系統 整數與浮點數 詳解 一

小結整數分為無符號數和有符號數。整數在計算機上的運算是模運算,形成的數學結構稱為阿貝爾群,阿貝爾群具有以下特點 滿足運算的交換律和結合律公理 整數具有單位元 0 整數具有逆元 由於模運算導致阿貝爾群產生,從而導致了整數與浮點數在運算性質上的極大不同。整數支援加法和乘法的交換律 結合律 而浮點數因為精...