計算機中的實數編碼
阿新 • • 發佈:2020-09-11
IEEE 754標準制定了32位單精度浮點數和64位雙精度浮點數格式,目前幾乎所有計算機都採用IEEE 754標準來表示浮點數。
IEEE 754 標準下的浮點格式為:符號(最高位)
指數
有效數字
- 單精度 1 符號位, 8位指數, 23位有效數字, 共32位數字
- 雙精度 1 符號位, 11位指數, 52位有效數字, 共64位數字
其中:
- 符號位1表示負數, 0表示正數
- 指數位也被稱為階碼, 恆為整數,使用偏移碼表示
浮點階碼:
IEEE 754標準中的指數也被稱為階碼,採用移碼錶示,移碼與補碼相似僅符號位相異(補碼1為負號,移碼1為正號)
移碼格式:1位符號位 其餘為 真值+\(2^{N-1}\)
例:
# 8位編碼下的127,偏移碼為127+127=0111 1111B+0111 1111B=1111 1110B
# 8位編碼下的-10,偏移碼為-10+127=111 0101B
# 單精度浮點資料為8位, 雙精度為11位
有效數字
以100.25位例
# 整數部分直接轉化成2進位制
# 100=110 0100B
# 小數部分採用除2取整法(0.25x2=0.5取0,0.5x2=1取1,除到沒有小數即可,結果為01)
# 0.25=01
# 科學計數法
# 100.25 = 110 0100.01B = 1.1001 0001B x 2^6
# 捨棄整數部分的1
# 結果為 1001 0001
【例子】把100.25轉化成浮點資料格式
- 100.25=0110 0100.01B=1.1001 0001Bx2^6 於是得出符號位為0
- 指數部分為6, 所以8位的階碼為6+127=133=1000 0101
- 有效數字部分為 1001 0001 0000 0000 0000 000
- 組合在一起: 0 10000101 1001 0001 0000 0000 0000 000 B = 0x 42C88000