為便於軟體的移植,浮點數的表示格式應該有統一標準(定義)。1985年IEEE(Institute of Electrical and Electronics Engineers)提出了IEEE754標準。該標準規定基數為2,階碼E用移碼錶示,尾數M用原碼錶示,根據原碼的規格化方法,最高數字位總是1,該標準將這個1預設儲存,使得尾數表示範圍比實際儲存的一位。實數 的IEEE754標準的浮點數格式為: 具體有三種形式: IEEE754三種浮點數的格式引數 型別 儲存位數 偏移值 數符(s) 階碼(E) 尾數(M) 總位數 十六進位制 十進位制 短實數(Single,Float) 1位 8位 23位 32位 0x7FH +127 長實數(Double) 1位 11 位 52位 64位 0x3FFH +1023 臨時實數(延伸雙精確度,不常用) 1位 15位 64位 80位 0x3FFFH +16383 對於階碼為0或為255(2047)的情況,IEEE有特殊的規定: 如果 E 是0 並且 M 是0,這個數±0(和符號位相關) 如果 E = 2 ?? 1 並且 M 是0,這個數是 ±無窮大(同樣和符號位相關) 如果 E = 2 ?? 1 並且 M 非0,這個數表示為不是一個數(NaN)。 標準浮點數的儲存在尾數中隱含儲存著一個1,因此在計算尾數的真值時比一般形式要多一個整數1。對於階碼E的儲存形式因為是127的偏移,所以在計算其移碼時與人們熟悉的128偏移不一樣,正數的值比用128偏移求得的少1,負數的值多1,為避免計算錯誤,方便理解,常將E當成二進位制真值進行儲存。例如:將數值-0.5按IEEE754單精度格式儲存,先將-0.5換成二進位制並寫成標準形式:-0.510=-0.12=-1.0×2-12,這裡s=1,M為全0,E-127=-1,E=12610=011111102,則儲存形式為: 1 01111110 000000000000000000000000=BE00000016 這裡不同的下標代表不同的進位制。 公式 在單精度時: V=(-1)^s*2^(E-126)*M 在雙精度時: V=(-1)^s*2^(E-1022)*M
為便於軟體的移植,浮點數的表示格式應該有統一標準(定義)。1985年IEEE(Institute of Electrical and Electronics Engineers)提出了IEEE754標準。該標準規定基數為2,階碼E用移碼錶示,尾數M用原碼錶示,根據原碼的規格化方法,最高數字位總是1,該標準將這個1預設儲存,使得尾數表示範圍比實際儲存的一位。實數 的IEEE754標準的浮點數格式為: 具體有三種形式: IEEE754三種浮點數的格式引數 型別 儲存位數 偏移值 數符(s) 階碼(E) 尾數(M) 總位數 十六進位制 十進位制 短實數(Single,Float) 1位 8位 23位 32位 0x7FH +127 長實數(Double) 1位 11 位 52位 64位 0x3FFH +1023 臨時實數(延伸雙精確度,不常用) 1位 15位 64位 80位 0x3FFFH +16383 對於階碼為0或為255(2047)的情況,IEEE有特殊的規定: 如果 E 是0 並且 M 是0,這個數±0(和符號位相關) 如果 E = 2 ?? 1 並且 M 是0,這個數是 ±無窮大(同樣和符號位相關) 如果 E = 2 ?? 1 並且 M 非0,這個數表示為不是一個數(NaN)。 標準浮點數的儲存在尾數中隱含儲存著一個1,因此在計算尾數的真值時比一般形式要多一個整數1。對於階碼E的儲存形式因為是127的偏移,所以在計算其移碼時與人們熟悉的128偏移不一樣,正數的值比用128偏移求得的少1,負數的值多1,為避免計算錯誤,方便理解,常將E當成二進位制真值進行儲存。例如:將數值-0.5按IEEE754單精度格式儲存,先將-0.5換成二進位制並寫成標準形式:-0.510=-0.12=-1.0×2-12,這裡s=1,M為全0,E-127=-1,E=12610=011111102,則儲存形式為: 1 01111110 000000000000000000000000=BE00000016 這裡不同的下標代表不同的進位制。 公式 在單精度時: V=(-1)^s*2^(E-126)*M 在雙精度時: V=(-1)^s*2^(E-1022)*M