作者Hao0228 (Hao0228)
看板C_and_CPP
標題[問題] hex to float疑問
時間Sat Oct 15 15:12:51 2016
各位版大好...想請教一個問題
假設我想指定一個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 *轉型呢?
還請各位版大能為小弟解惑...謝謝!!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.230.228.107
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1476515575.A.621.html
1F:推 stupid0319: 因為float f2 = 0xBF9DF3B6,所以f2 = 0xBF9DF3B6 10/15 15:44
2F:→ stupid0319: 記憶體存放還有指標運用跟浮點數IEEE 754翻書多看一下 10/15 15:47
3F:→ pttworld: int i = 0xBF9DF3B6; float f = i; 10/15 15:51
4F:→ stupid0319: 樓上也沒睡飽嗎 10/15 16:00
5F:→ pttworld: 樓上,多些口水可以淹死我但不一定能叫醒我。 10/15 17:55
6F:→ ilikekotomi: f2的case會自動幫你轉型成float 10/15 18:11
7F:推 LPH66: 給原 PO: 請思考 float f = 1; 的意思 10/16 00:32
8F:→ firejox: 沒有hex的type啊 hex跟整數是一樣的 10/16 01:35
9F:推 jim22: ㄘㄘㄨㄗㄔ 10/16 09:38
10F:推 chuegou: 我以為這樣寫就會直接放進去...是因為我是寫mcu? 10/16 16:03
11F:→ chuegou: 我好像漏掉什麼前提... 10/16 16:04
12F:推 CoNsTaR: 樓上 是這樣吧 int i = xxx; float *f = (float*)&i; 10/16 17:45
13F:推 chuegou: 我想我疑問產生的點 是因為有號數會直接放進去 10/16 18:20
14F:推 LPH66: 「直接放進去」? 10/16 23:58
15F:→ LPH66: 能貼一下會「直接放進去」的程式嗎? 10/17 00:01
16F:推 hakman: 原po 誤會了什麼吧... 10/17 11:22
17F:→ hakman: 基本上轉型是設計最通常的方法,樓上的大大就有給出例子 10/17 11:23
18F:→ hakman: float f = 1,若照你直接給binary 的想法,這個f 等於 0.0 10/17 11:23
19F:→ hakman: 可是出來的f=1.0 ,hex 也是沿用這個想法,所以f2 才會那 10/17 11:24
20F:→ hakman: 麼大 10/17 11:24
22F:→ chuegou: 我感覺我漏掉了什麼... 10/17 21:57
23F:→ firejox: union 吧 我猜 10/19 13:54