[問題] hex to float疑問

作者: Hao0228 (Hao0228)   2016-10-15 15:12:51
各位版大好...想請教一個問題
假設我想指定一個hex給一個float變數
比如說...0xBF9DF3B6 在float內是 -1.234
寫了一段測試的程式
uint32_t i = 0xBF9DF3B6;
float f = *(float*)&i;
cout << f << endl;
float f2 = 0xBF9DF3B6;
cout << f2 << endl;
執行結果
f : -1.234
f2 : 3.2148e+09
一直搞不太懂為什麼非得用float *轉型呢?
還請各位版大能為小弟解惑...謝謝!!
作者: stupid0319 (徵女友)   2016-10-15 15:44:00
因為float f2 = 0xBF9DF3B6,所以f2 = 0xBF9DF3B6記憶體存放還有指標運用跟浮點數IEEE 754翻書多看一下
作者: pttworld (批踢踢世界)   2016-10-15 15:51:00
int i = 0xBF9DF3B6; float f = i;
作者: stupid0319 (徵女友)   2016-10-15 16:00:00
樓上也沒睡飽嗎
作者: pttworld (批踢踢世界)   2016-10-15 17:55:00
樓上,多些口水可以淹死我但不一定能叫醒我。
作者: ilikekotomi (Young)   2016-10-15 18:11:00
f2的case會自動幫你轉型成float
作者: LPH66 (-6.2598534e+18f)   2016-10-16 00:32:00
給原 PO: 請思考 float f = 1; 的意思
作者: firejox (Tangent)   2016-10-16 01:35:00
沒有hex的type啊 hex跟整數是一樣的
作者: jim22 (昏了)   2016-10-16 09:38:00
ㄘㄘㄨㄗㄔ
作者: chuegou (chuegou)   2016-10-16 16:03:00
我以為這樣寫就會直接放進去...是因為我是寫mcu?我好像漏掉什麼前提...
作者: CoNsTaR ((const *))   2016-10-16 17:45:00
樓上 是這樣吧 int i = xxx; float *f = (float*)&i;
作者: chuegou (chuegou)   2016-10-16 18:20:00
我想我疑問產生的點 是因為有號數會直接放進去
作者: LPH66 (-6.2598534e+18f)   2016-10-16 23:58:00
「直接放進去」?能貼一下會「直接放進去」的程式嗎?
作者: hakman (^____^)   2016-10-17 11:22:00
原po 誤會了什麼吧...基本上轉型是設計最通常的方法,樓上的大大就有給出例子float f = 1,若照你直接給binary 的想法,這個f 等於 0.0可是出來的f=1.0 ,hex 也是沿用這個想法,所以f2 才會那麼大
作者: chuegou (chuegou)   2016-10-17 21:56:00
http://ideone.com/aeHR0l 抱歉拖了一天我感覺我漏掉了什麼...
作者: firejox (Tangent)   2016-10-19 13:54:00
union 吧 我猜

Links booklink

Contact Us: admin [ a t ] ucptt.com