計算機組成原理 機器數的浮點表示法

寫個學習心得鞏固下前段時間學的機組的知識吧。

一 .非規格化浮點數定義:小數點的位置根據需要而變動
在這裏插入圖片描述
浮點數個人覺得完全可以當做科學計數法來記,尾數爲小數部分(如0.11);階碼部分爲階數,公式可表示爲:N=M*r^E
其中,r爲階碼的底,與尾數的基數相同,一般來講做題的話題目會明確給出。
E,M爲帶符號的定點數,E爲階碼,M爲尾數。(大多數計算機中,尾數爲純小數,常用原碼或補碼錶示;階碼爲整數,常用移碼或補碼錶示)
浮點數的格式如上圖,尾數與階碼均用補碼錶示。E+M=機器的位數(感覺還是放個圖比較好理解,word手擼圖,莫名卑微哈哈,寫完這篇去看markdown了)
1.最大正數(二進制)
當Es=0,Ms=0時,階碼尾數均爲正數;當階碼與尾數的數值(不含符號位)全爲1時,該浮點數即爲最大正數
在這裏插入圖片描述
2.最小正數
當Es=1且階碼各位爲1,Ms=0且尾數最後一位不爲1時,階數爲負,尾數爲正,即得到最小正數在這裏插入圖片描述
3.絕對值最大負數(最小負數)
當Es=0,階碼各位爲1,Ms=1,尾數各位爲1時,得到絕對值最大負數(最小負數)在這裏插入圖片描述
4.絕對值最小負數(最大負數)
當Es=1且階碼各位爲0,Ms=1且尾數除最後一位外其餘各位均爲0的時候,得到絕對值最小負數(最大負數)
在這裏插入圖片描述

二 .IEEE754標準浮點數
IEEE754標準浮點數的格式如圖所示
在這裏插入圖片描述
三 .規格化浮點數
規格化浮點數的尾數M的絕對值應爲:121\over2\leq|M|<1
(當121\over2\leqM<1時,尾數爲0.1XX…形式;當-1\leqM<-121\over2時,尾數爲1.0XX…形式)

規格化操作:通過調整非規格化浮點數的尾數和階碼的大小,使非零浮點數在尾數的最高位數位上保證是有效值(可對比科學計數法,如100.1用科學計數法應表示爲1.0011021.001*10^2)。將非規格化浮點數轉化爲規格化浮點數,即轉化爲符合IEEE754標準的浮點數。

例:(100.25)10(100.25)_{10}轉換爲短浮點數格式
①先將十進制轉換爲二進制數:

(100.25)10(100.25)_{10}=(1100100.01)2(1100100.01)_2

②將該二進制數規格化:

1100100.01=1.10010001*262^6(262^6進一步轉換爲21102^{110})//規格化操作到這裏就算完成了 ,但浮點數代碼未完成

③計算出階碼的移碼(偏置值+階碼真值):

262^6進一步轉換爲21102^{110},該110即爲偏置值。
1111111+110=10000101
④以短浮點數形式存儲該數
符號位=0
階碼=10000101
尾數(先前規格化操作中求得的尾數後補零,直到位數達到規定的格式位數)=10010001000000000000000
短浮點數代碼:0;1000101;10010001000000000000000

同理,可求得短浮點數格式轉換爲其他進制的數
例:把短浮點數C1C90000H轉換成十進制數

①先轉換爲二進制數形式
C1C90000H=11000001110010010000000000000000
分離符號位、階碼。尾數
符號位=1
階碼=10000011
尾數=10010010000000000000000

②計算偏置值(移碼-階碼真值)
10000011-1111111=100

③以規格化二進制數形式表示出
1.1001001*242^4

④轉換爲非規格化二進制數
11001.001

⑤轉換成十進制(加符號)
(11001.001)2(11001.001)_2=-(25.125)10(25.125)_{10}
故該浮點數爲-25.125

PS:IEEE754短浮點數規格化的數值爲:
v=(1)S(-1)^S*(1.f)2E127*2^{E-127}
S代表符號位,0正1負;E爲用移碼錶示的階碼;f是尾數的小數部分

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章