计算机组成原理 机器数的浮点表示法
寫(xiě)個(gè)學(xué)習(xí)心得鞏固下前段時(shí)間學(xué)的機(jī)組的知識(shí)吧。
一 .非規(guī)格化浮點(diǎn)數(shù)定義:小數(shù)點(diǎn)的位置根據(jù)需要而變動(dòng)
 
 浮點(diǎn)數(shù)個(gè)人覺(jué)得完全可以當(dāng)做科學(xué)計(jì)數(shù)法來(lái)記,尾數(shù)為小數(shù)部分(如0.11);階碼部分為階數(shù),公式可表示為:N=M*r^E
 其中,r為階碼的底,與尾數(shù)的基數(shù)相同,一般來(lái)講做題的話(huà)題目會(huì)明確給出。
 E,M為帶符號(hào)的定點(diǎn)數(shù),E為階碼,M為尾數(shù)。(大多數(shù)計(jì)算機(jī)中,尾數(shù)為純小數(shù),常用原碼或補(bǔ)碼表示;階碼為整數(shù),常用移碼或補(bǔ)碼表示)
 浮點(diǎn)數(shù)的格式如上圖,尾數(shù)與階碼均用補(bǔ)碼表示。E+M=機(jī)器的位數(shù)(感覺(jué)還是放個(gè)圖比較好理解,word手?jǐn)]圖,莫名卑微哈哈,寫(xiě)完這篇去看markdown了)
 1.最大正數(shù)(二進(jìn)制)
 當(dāng)Es=0,Ms=0時(shí),階碼尾數(shù)均為正數(shù);當(dāng)階碼與尾數(shù)的數(shù)值(不含符號(hào)位)全為1時(shí),該浮點(diǎn)數(shù)即為最大正數(shù)
 
 2.最小正數(shù)
 當(dāng)Es=1且階碼各位為1,Ms=0且尾數(shù)最后一位不為1時(shí),階數(shù)為負(fù),尾數(shù)為正,即得到最小正數(shù)
 3.絕對(duì)值最大負(fù)數(shù)(最小負(fù)數(shù))
 當(dāng)Es=0,階碼各位為1,Ms=1,尾數(shù)各位為1時(shí),得到絕對(duì)值最大負(fù)數(shù)(最小負(fù)數(shù))
 4.絕對(duì)值最小負(fù)數(shù)(最大負(fù)數(shù))
 當(dāng)Es=1且階碼各位為0,Ms=1且尾數(shù)除最后一位外其余各位均為0的時(shí)候,得到絕對(duì)值最小負(fù)數(shù)(最大負(fù)數(shù))
 
二 .IEEE754標(biāo)準(zhǔn)浮點(diǎn)數(shù)
 IEEE754標(biāo)準(zhǔn)浮點(diǎn)數(shù)的格式如圖所示
 
 三 .規(guī)格化浮點(diǎn)數(shù)
 規(guī)格化浮點(diǎn)數(shù)的尾數(shù)M的絕對(duì)值應(yīng)為:121\over221?≤\leq≤|M|<1
 (當(dāng)121\over221?≤\leq≤M<1時(shí),尾數(shù)為0.1XX…形式;當(dāng)-1≤\leq≤M<-121\over221?時(shí),尾數(shù)為1.0XX…形式)
規(guī)格化操作:通過(guò)調(diào)整非規(guī)格化浮點(diǎn)數(shù)的尾數(shù)和階碼的大小,使非零浮點(diǎn)數(shù)在尾數(shù)的最高位數(shù)位上保證是有效值(可對(duì)比科學(xué)計(jì)數(shù)法,如100.1用科學(xué)計(jì)數(shù)法應(yīng)表示為1.001?1021.001*10^21.001?102)。將非規(guī)格化浮點(diǎn)數(shù)轉(zhuǎn)化為規(guī)格化浮點(diǎn)數(shù),即轉(zhuǎn)化為符合IEEE754標(biāo)準(zhǔn)的浮點(diǎn)數(shù)。
例:(100.25)10(100.25)_{10}(100.25)10?轉(zhuǎn)換為短浮點(diǎn)數(shù)格式
 ①先將十進(jìn)制轉(zhuǎn)換為二進(jìn)制數(shù):
(100.25)10(100.25)_{10}(100.25)10?=(1100100.01)2(1100100.01)_2(1100100.01)2?
②將該二進(jìn)制數(shù)規(guī)格化:
1100100.01=1.10010001*262^626(262^626進(jìn)一步轉(zhuǎn)換為21102^{110}2110)//規(guī)格化操作到這里就算完成了 ,但浮點(diǎn)數(shù)代碼未完成
③計(jì)算出階碼的移碼(偏置值+階碼真值):
262^626進(jìn)一步轉(zhuǎn)換為21102^{110}2110,該110即為偏置值。
 1111111+110=10000101
 ④以短浮點(diǎn)數(shù)形式存儲(chǔ)該數(shù)
 符號(hào)位=0
 階碼=10000101
 尾數(shù)(先前規(guī)格化操作中求得的尾數(shù)后補(bǔ)零,直到位數(shù)達(dá)到規(guī)定的格式位數(shù))=10010001000000000000000
 短浮點(diǎn)數(shù)代碼:0;1000101;10010001000000000000000
同理,可求得短浮點(diǎn)數(shù)格式轉(zhuǎn)換為其他進(jìn)制的數(shù)
 例:把短浮點(diǎn)數(shù)C1C90000H轉(zhuǎn)換成十進(jìn)制數(shù)
①先轉(zhuǎn)換為二進(jìn)制數(shù)形式
 C1C90000H=11000001110010010000000000000000
 分離符號(hào)位、階碼。尾數(shù)
 符號(hào)位=1
 階碼=10000011
 尾數(shù)=10010010000000000000000
②計(jì)算偏置值(移碼-階碼真值)
 10000011-1111111=100
③以規(guī)格化二進(jìn)制數(shù)形式表示出
 1.1001001*242^424
④轉(zhuǎn)換為非規(guī)格化二進(jìn)制數(shù)
 11001.001
⑤轉(zhuǎn)換成十進(jìn)制(加符號(hào))
 (11001.001)2(11001.001)_2(11001.001)2?=-(25.125)10(25.125)_{10}(25.125)10?
 故該浮點(diǎn)數(shù)為-25.125
PS:IEEE754短浮點(diǎn)數(shù)規(guī)格化的數(shù)值為:
 v=(?1)S(-1)^S(?1)S*(1.f)?2E?127*2^{E-127}?2E?127
 S代表符號(hào)位,0正1負(fù);E為用移碼表示的階碼;f是尾數(shù)的小數(shù)部分
總結(jié)
以上是生活随笔為你收集整理的计算机组成原理 机器数的浮点表示法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
 
                            
                        - 上一篇: centos7.4安装
- 下一篇: ValueError: With n_s
