首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 組合語言

計算機系統原理(十一)二進制浮點數與 IEEE 754 標準深度解析

     編輯:組合語言

引言

整數無法表示小數及極大極小值,浮點數應運而生。早期廠商標準不一,1985 年 IEEE 754 統一了浮點表示,如同秦始皇統一度量衡。

二進制小數表示

二進制小數按 2 的冪次展開,如 10010.1110 = 18.875。但並非所有十進制小數都能精確表示(如 0.3)。

IEEE 754 格式:科學計數法

浮點數表示為 V = (-1)^s × M × 2^E:

  • s:符號位(0 正,1 負)
  • M:尾數(1 ≤ M < 2 或 0 ≤ M < 1)
  • E:階碼(帶偏移的有符號整數)

單精度 (float):32 位 = 1 符號 + 8 階碼 + 23 尾數
雙精度 (double):64 位 = 1 符號 + 11 階碼 + 52 尾數

三種取值情況

  1. 規格化值:階碼不全 0/1。真實階碼 E = e - Bias(Bias=127/1023),尾數 M = 1 + f(隱含最高位 1)。
  2. 非規格化值:階碼全 0。E = 1 - Bias,尾數 M = f(無隱含 1),可表示 0 及極小值。±0 由符號位區分。
  3. 特殊值:階碼全 1。尾數 0 → ±∞;尾數非 0 → NaN(非數字)。

取值範圍詳析

推導非規格化最小/最大值、規格化最小/最大值公式。關鍵點:最小規格化值與最大非規格化值平滑過渡(階碼相同,尾數差最小精度 2-n)。

單/雙精度具體數值表:

習題:最小不可精確正整數

對於 n 位尾數,最小不可精確正整數為 2n+1 + 1。例 n=1 時為 5(尾數只能表示 0, 0.5, 1, 1.5,乘以階碼無法得 5)。

小結

本章詳細拆解 IEEE 754 結構,為理解捨入與運算奠基。下一章講解捨入規則與浮點運算。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved