|
|
為便于軟件的移植,浮點數(shù)的表示形式應(yīng)該有統(tǒng)一標(biāo)準(zhǔn)(定義)。1985年IEEE(Institute of Electrical and Electronics Engineers)提出了IEEE754標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)規(guī)定基數(shù)為2,階碼E用移碼(非標(biāo)準(zhǔn)移碼,標(biāo)準(zhǔn)移碼與補碼的符號位相反,而非標(biāo)準(zhǔn)移碼要再減一)[1]表示,尾數(shù)M用原碼表示,根據(jù)二進(jìn)制的規(guī)格化方法,數(shù)值的最高位總是1,該標(biāo)準(zhǔn)將這個1缺省存儲,使得尾數(shù)表示范圍比實際存儲的多一位。IEEE754標(biāo)準(zhǔn)中有三種形式的浮點數(shù):短浮點數(shù)(又稱單精度浮點數(shù))、長浮點數(shù)(又稱雙精度浮點數(shù))、臨時浮點數(shù)(又稱擴展精度浮點數(shù),這種浮點數(shù)沒有隱含位),它們的具體格式如下表:
類型
存儲位數(shù)
偏置值
數(shù)符(S)
階碼(E)
尾數(shù)(M)
總位數(shù)
十六進(jìn)制
十進(jìn)制
短浮點數(shù)(Single,float)
1位
8位
23位
32位
7FH
+127
長浮點數(shù)(Double)
1位
11位
52位
64位
3FFH
+1023
臨時浮點數(shù)(擴展精度浮點數(shù))
1位
15位
64位
80位
3FFFH
+16383
對于階碼為0或255的情況,IEEE754標(biāo)準(zhǔn)有特別的規(guī)定:
如果 E 是0 并且 M 是0,則這個數(shù)的真值為±0(正負(fù)號和數(shù)符位有關(guān)) 如果 E = 255 并且 M 是0,則這個數(shù)的真值為±∞(同樣和符號位有關(guān)) 如果 E = 255 并且 M 不是0,則這不是一個數(shù)(NaN)。
短浮點數(shù)和長浮點數(shù)(不含臨時浮點數(shù))的存儲在尾數(shù)中隱含存儲著一個1,因此在計算尾數(shù)的真值時比一般形式要多一個整數(shù)1。對于階碼E的存儲形式因為是127的偏移,所以在計算其移碼時與人們熟悉的128偏移不一樣,正數(shù)的值比用128偏移求得的少1,負(fù)數(shù)的值多1,為避免計算錯誤,方便理解,常將E當(dāng)成二進(jìn)制真值進(jìn)行存儲。例如:將數(shù)值-0.5按IEEE754單精度格式存儲,先將-0.5換成二進(jìn)制并寫成標(biāo)準(zhǔn)形式:-0.5(10進(jìn)制)=-0.1(2進(jìn)制)=-1.0×2-1(2進(jìn)制,-1是指數(shù)),這里s=1,M為全0,E-127=-1,E=126(10進(jìn)制)=01111110(2進(jìn)制),則存儲形式為:
1 01111110 000000000000000000000000=BF000000(16進(jìn)制)
這里不同的下標(biāo)代表不同的進(jìn)制。
|
|