定義
IEEE754標准規定小數的表示形式為V=(-1)S*M*2E
S為符號位
M為尾數
E為階碼
一個單獨的符號位編碼S,符號位為0,表示正數,符號位為1表示負數。
k位的階碼字段exp=ek-1.....e0 編碼階碼E。
n位小數字段frac=fn-1......f0 編碼尾數M,但是編碼出來的值也依賴於階碼字段的值是否等於0。
倆種浮點數
IEEE754定義了倆種浮點數,分為32位單精度浮點數,64位雙精度浮點數。
32位精度浮點數使用 1 位表示符號位,8位表示階碼,23位表示尾數。
64位精度浮點數使用 1 位表示符號位,11位表示階碼,52位表示尾數。
4種表現形式
IEEE754將小數表示為4種形式,規格化小數,非規格化小數,無窮,NAN,以下使用單精度來說明
規格化小數 | s | 非0 非 255 | f |
非規格化小數 | s | 0 | f |
無窮 | s | 11111111 | 0 |
NAN | s | 11111111 | f |
具體表示
IEEE754 定義的小數表示為 V=(-1)S*M*2E 只要計算出M和E即可。
規格化小數
階碼計算方式:E=e-Bias,e=ek-1.....e0 ,Bias=2k-1 -1。
小數計算方式:小數字段等於0.fn-1......f0,尾數M=1+f,即尾數M默認以1開始。
非規格化小數
階碼計算方式:E=1-Bias,e=0,Bias=2k-1 -1。
小數計算方式:小數字段等於0.fn-1......f0。
特殊值
階碼全為1的是特殊值,當小數域全0時是無窮,s=1,表示負無窮,s=0表示正無窮。
階碼全為1,小數域不是全0時,表示NAN,即非數字,比如 無窮 - 無窮,根號負數。
以下使用8位表示浮點數。S=1,K=4,M=3,Bias=2k-1-1=7
描述 | 位表示 | 指數
|
小數
|
值
|
||||||||
0 最小的非規格化數
最大非規格化數
|
0 0000 000 0 0000 001 0 0000 010 0 0000 011 ....... 0 0000 111 |
0 -6 1/64 0 -6 1/64 0 -6 1/64 0 -6 1/64
0 -6 1/64
|
0/8 0/8 1/8 1/8 2/8 2/8 3/8 3/8
7/8 7/8 |
0/512 0 0 1/512 1/512 0.001953 2/512 1/256 0.003906 3/512 3/512 0.005859
7/512 7/512 0.013672 |
||||||||
最小的規格化數
|
0 0001 000 0 0001 001 .... 0 0110 110 0 0110 111 0 0111 000 0 0111 001 0 0111 010 ....... 0 1110 110 |
1 -6 1/64 1 -6 1/64
6 -1 1/2 6 -1 1/2 7 0 1 7 0 1 7 0 1
14 7 128 |
0/8 1/8 1/8 9/8
6/8 14/8 7/8 15/8 0 8/8 1/8 9/8 2/8 10/8
6/8 14/8 |
8/512 8/512 0.015625 9/512 9/512 0.017578
448/512 448/512 0.875 480/512 480/512 0.9375 512/512 512/512 1 576/512 576/512 1.125 640/512 640/512 1.25
224 224 224 |
||||||||
最大規格化數 |
0 1110 111 | 14 7 128 | 7/8 15/8 | 240 240 240 | ||||||||
無窮大 |
0 1111 000 |