為便于軟件的移植,浮點數(shù)的表示形式應該有統(tǒng)一標準(定義)。1985年IEEE(Institute of Electrical and Electronics Engineers)提出了IEEE754標準。該標準規(guī)定基數(shù)為2,階碼E用移碼(非標準移碼,標準移碼與補碼的符號位相反,而非標準移碼要再減一)[1]表示,尾數(shù)M用原碼表示,根據(jù)二進制的規(guī)格化方法,數(shù)值的最高位總是1,該標準將這個1缺省存儲,使得尾數(shù)表示范圍比實際存儲的多一位。IEEE754標準中有三種形式的浮點數(shù):短浮點數(shù)(又稱單精度浮點數(shù))、長浮點數(shù)(又稱雙精度浮點數(shù))、臨時浮點數(shù)(又稱擴展精度浮點數(shù),這種浮點數(shù)沒有隱含位),它們的具體格式如下表:
類型
存儲位數(shù)
偏置值
數(shù)符(S)
階碼(E)
尾數(shù)(M)
總位數(shù)
十六進制
十進制
短浮點數(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標準有特別的規(guī)定:
如果 E 是0 并且 M 是0,則這個數(shù)的真值為±0(正負號和數(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,負數(shù)的值多1,為避免計算錯誤,方便理解,常將E當成二進制真值進行存儲。例如:將數(shù)值-0.5按IEEE754單精度格式存儲,先將-0.5換成二進制并寫成標準形式:-0.5(10進制)=-0.1(2進制)=-1.0×2-1(2進制,-1是指數(shù)),這里s=1,M為全0,E-127=-1,E=126(10進制)=01111110(2進制),則存儲形式為:
1 01111110 000000000000000000000000=BF000000(16進制)
這里不同的下標代表不同的進制。