计算机组成原理 机器数的浮点表示法
寫個學習心得鞏固下前段時間學的機組的知識吧。
一 .非規格化浮點數定義:小數點的位置根據需要而變動
浮點數個人覺得完全可以當做科學計數法來記,尾數為小數部分(如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\over221?≤\leq≤|M|<1
(當121\over221?≤\leq≤M<1時,尾數為0.1XX…形式;當-1≤\leq≤M<-121\over221?時,尾數為1.0XX…形式)
規格化操作:通過調整非規格化浮點數的尾數和階碼的大小,使非零浮點數在尾數的最高位數位上保證是有效值(可對比科學計數法,如100.1用科學計數法應表示為1.001?1021.001*10^21.001?102)。將非規格化浮點數轉化為規格化浮點數,即轉化為符合IEEE754標準的浮點數。
例:(100.25)10(100.25)_{10}(100.25)10?轉換為短浮點數格式
①先將十進制轉換為二進制數:
(100.25)10(100.25)_{10}(100.25)10?=(1100100.01)2(1100100.01)_2(1100100.01)2?
②將該二進制數規格化:
1100100.01=1.10010001*262^626(262^626進一步轉換為21102^{110}2110)//規格化操作到這里就算完成了 ,但浮點數代碼未完成
③計算出階碼的移碼(偏置值+階碼真值):
262^626進一步轉換為21102^{110}2110,該110即為偏置值。
1111111+110=10000101
④以短浮點數形式存儲該數
符號位=0
階碼=10000101
尾數(先前規格化操作中求得的尾數后補零,直到位數達到規定的格式位數)=10010001000000000000000
短浮點數代碼:0;1000101;10010001000000000000000
同理,可求得短浮點數格式轉換為其他進制的數
例:把短浮點數C1C90000H轉換成十進制數
①先轉換為二進制數形式
C1C90000H=11000001110010010000000000000000
分離符號位、階碼。尾數
符號位=1
階碼=10000011
尾數=10010010000000000000000
②計算偏置值(移碼-階碼真值)
10000011-1111111=100
③以規格化二進制數形式表示出
1.1001001*242^424
④轉換為非規格化二進制數
11001.001
⑤轉換成十進制(加符號)
(11001.001)2(11001.001)_2(11001.001)2?=-(25.125)10(25.125)_{10}(25.125)10?
故該浮點數為-25.125
PS:IEEE754短浮點數規格化的數值為:
v=(?1)S(-1)^S(?1)S*(1.f)?2E?127*2^{E-127}?2E?127
S代表符號位,0正1負;E為用移碼表示的階碼;f是尾數的小數部分
總結
以上是生活随笔為你收集整理的计算机组成原理 机器数的浮点表示法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: centos7.4安装
- 下一篇: ValueError: With n_s