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

VDSP (BF561) 浮點運算系列(2):float 編碼疑問與手算驗證

     編輯:關於C++

針對 float a = 1234.56; 編譯產生 0x449A51EC,手算推導過程與系列文(5)相同,此處為獨立記錄版本。

編譯器輸出

R0 = 20972 (X);  // 低 16 位 0x51EC
R0.H = 17562;    // 高 16 位 0x449A
[FP + 0x10] = R0;

合併為 0x449A51EC。

手算步驟

  1. 整數 1234 → 二進制 10011010010
  2. 小數 0.56 → 乘 2 取整序列:1,0,0,0,1,1,1,1,0,1,0,1,1,1...
  3. 合併:10011010010.10001111010111...
  4. 正規化:1.001101001010001111010111 * 2^10
  5. 指數 = 127+10=137 (10001001)
  6. 尾數 = 001101001010001111010111
  7. 結果 0x449A51EB,與編譯器 0x449A51EC 末位差 1(捨入差異)。

IEEE 754 格式回顧

符號 1 位 | 指數 8 位 (bias 127) | 尾數 23 位 (隱含 1)。

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