1. 程式人生 > 實用技巧 >計算機中的實數編碼

計算機中的實數編碼

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}\)

, 其中N表示位數
例:

# 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轉化成浮點資料格式

  1. 100.25=0110 0100.01B=1.1001 0001Bx2^6 於是得出符號位為0
  2. 指數部分為6, 所以8位的階碼為6+127=133=1000 0101
  3. 有效數字部分為 1001 0001 0000 0000 0000 000
  4. 組合在一起: 0 10000101 1001 0001 0000 0000 0000 000 B = 0x 42C88000

如有錯漏,望指正