2012年3月19日 星期一

[筆記] IEEE754 浮點數 轉換

 作者  ie945167 (龍蝦)                                      站內  Lobster
 標題  [筆記] IEEE754 浮點數 轉換
 時間  2012/03/19 Mon 00:18:57
───────────────────────────────────────

原文出處:
    http://edisonx.pixnet.net/blog/post/83095843


Float → Hex


先以 float 為例,假設宣告是

float f;
unsigned u;

要將 f 之記憶體內容拉到 u 裡面去,觀念是,

(1) 先將 float 取位址值                         --->                 &f
(2) 將位址內容轉型成 unsigned* 指標             --->      (unsigned*)&f
(3) 將對 unsigned* 指標做取值(dereference) 動作 --->     *(unsigned*)&f
(4) 再設給 u 值                                 ---> u = *(unsigned*)&f
(5) 再顯示 u 之 16 進位                         ---> printf("%8x\n", u);

u = *(unsigned*)&f;


Hex → Float

DWORD DW_Data;

float f = *(float*)&DW_Data;



PS.

1. 在轉換時會有誤差出現,需注意及特別處理

2. 負數部分我目前沒有試過

3. 上面的 (2) 我還是不懂這樣的做法,背後是怎麼運作的…0rz


--
▅◣ Origin:  謠 言 報  bbs.csie.fju.edu.tw
▋◤ Author: ie945167 從 219-84-254-78-adsl-kao.dynamic.so-net.net.tw 發表

沒有留言:

張貼留言