IEEE浮點數(shù)標(biāo)準將數(shù)表示成形式:
- 符號數(shù)
:決定了數(shù)是負的(
)還是正的(
),其中把數(shù)值
的符號位解釋當(dāng)做是一種特殊情形。
- 有效數(shù)
:一個二進制分數(shù),范圍要么是在
和
之間,要么是在
到
之間。
- 指數(shù)
:用
的冪次方對數(shù)值加權(quán)。
浮點數(shù)的位表示分成3個字段對符號數(shù)、有效數(shù)
、指數(shù)
進行編碼:
-
位的符號字段
s對符號數(shù)進行編碼。
-
位的指數(shù)字段
對指數(shù)
進行編碼;
-
位的分數(shù)字段
對有效數(shù)
進行編碼,但是編碼后的
值取決于指數(shù)字段
exp是否等于。
圖2.32展示了如何將這3個字段打包成兩種最常見格式的字。

標(biāo)準的浮點數(shù)格式.png
- 在單精度浮點數(shù)格式(C語言中的
float)里,字長為位:
位表示符號字段
s,位表示指數(shù)字段
exp,位表示分數(shù)字段
frac。 - 在雙精度浮點數(shù)格式(C語言中的
double)里,字長為位:
位表示符號字段
s,位表示指數(shù)字段
exp,位表示分數(shù)字段
frac。
對于單精度浮點數(shù),根據(jù)指數(shù)字段exp的值,一個給定二進制表示的數(shù)值可分成3種不同的情況:
情形1:可歸一化數(shù)
特征
指數(shù)字段
exp既不全是0,也不全是1;
指數(shù)值;
;
解釋:
- 單精度情形下,指數(shù)字段
exp的無符號數(shù)范圍是1到254,雙精度情形下,指數(shù)字段exp的無符號數(shù)范圍是1到2046; - 解釋指數(shù)
為一個用偏移形式表示的有符號數(shù),即指數(shù)值
,其中
exp是位模式為的無符號數(shù),
(單精度情形數(shù)值為
,雙精度情形數(shù)值為
)。據(jù)此可得出:單精度情形下指數(shù)值
的數(shù)值范圍是
到
,雙精度情形下指數(shù)值
的數(shù)值范圍是
到
。
- 解釋有效數(shù)
為一個二進制表示為
的數(shù),等價于有效數(shù)
,這叫做隱式1開頭表示。這樣能多表示1位精度,因為通常會調(diào)整指數(shù)
使得有效數(shù)
滿足
,且開頭的位一直等于1,不需要顯式地表示。用字段
frac來表示分數(shù)值,其中
,對應(yīng)的二進制表示為
。
情形2:不可歸一化數(shù)
特征:
指數(shù)字段
exp全是
指數(shù)值;
有效數(shù);
解釋:
- 有效數(shù)
,表示分數(shù)字段
frac沒有隱式的開頭1;
為什么要提供不可歸一化數(shù)?
- 不可歸一化數(shù)提供了一種表示
的方法
由于可歸一化數(shù)對應(yīng)的有效數(shù),所以不能用可歸一化數(shù)來表示
。
- 為了表示非常接近
的數(shù)。
不可歸一化數(shù)可提供熟知的漸近下溢性質(zhì):所有可能的數(shù)值在附近呈均勻分布。
如何表示?
- 符號位
s是0,即符號數(shù);
- 指數(shù)字段
exp全是0,即指數(shù);
- 分數(shù)字段
frac全是0,即有效數(shù);
-
;
如何表示?
- 符號位
s是1,即符號數(shù);
- 指數(shù)字段
exp全是0,即指數(shù);
- 分數(shù)字段
frac全是0,即有效數(shù);
-
;
注意:
- 使用IEEE浮點數(shù)標(biāo)準,數(shù)值
和
在有些情形里當(dāng)做是一樣的,有些情形里當(dāng)做是不一樣的。
情形3:特殊值
特征:
指數(shù)字段
exp全是1;
如何表示?
- 指數(shù)字段
exp全是1; - 分數(shù)字段
frac全是0; - 符號位
s是0,即符號數(shù);
如何表示?
- 指數(shù)字段
exp全是1; - 分數(shù)字段
frac全是0; - 符號位
s是1,即符號數(shù);
如何表示?
- 指數(shù)字段
exp全是1; - 分數(shù)字段
frac不等于;
兩個慣用法:
- 當(dāng)乘以兩個非常大數(shù),或者除以0時,使用無窮大來表示運算結(jié)果;
- 當(dāng)運算結(jié)果不能用實數(shù)或者無窮大來表示時,就使用
來表示;