[問題] hex to float疑問

看板C_and_CPP作者 (Hao0228)時間9年前 (2016/10/15 15:12), 編輯推噓9(9014)
留言23則, 9人參與, 最新討論串1/4 (看更多)
各位版大好...想請教一個問題 假設我想指定一個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://www.ptt.cc/bbs/C_and_CPP/M.1476515575.A.621.html

10/15 15:44, , 1F
因為float f2 = 0xBF9DF3B6,所以f2 = 0xBF9DF3B6
10/15 15:44, 1F

10/15 15:47, , 2F
記憶體存放還有指標運用跟浮點數IEEE 754翻書多看一下
10/15 15:47, 2F

10/15 15:51, , 3F
int i = 0xBF9DF3B6; float f = i;
10/15 15:51, 3F

10/15 16:00, , 4F
樓上也沒睡飽嗎
10/15 16:00, 4F

10/15 17:55, , 5F
樓上,多些口水可以淹死我但不一定能叫醒我。
10/15 17:55, 5F

10/15 18:11, , 6F
f2的case會自動幫你轉型成float
10/15 18:11, 6F

10/16 00:32, , 7F
給原 PO: 請思考 float f = 1; 的意思
10/16 00:32, 7F

10/16 01:35, , 8F
沒有hex的type啊 hex跟整數是一樣的
10/16 01:35, 8F

10/16 09:38, , 9F
ㄘㄘㄨㄗㄔ
10/16 09:38, 9F

10/16 16:03, , 10F
我以為這樣寫就會直接放進去...是因為我是寫mcu?
10/16 16:03, 10F

10/16 16:04, , 11F
我好像漏掉什麼前提...
10/16 16:04, 11F

10/16 17:45, , 12F
樓上 是這樣吧 int i = xxx; float *f = (float*)&i;
10/16 17:45, 12F

10/16 18:20, , 13F
我想我疑問產生的點 是因為有號數會直接放進去
10/16 18:20, 13F

10/16 23:58, , 14F
「直接放進去」?
10/16 23:58, 14F

10/17 00:01, , 15F
能貼一下會「直接放進去」的程式嗎?
10/17 00:01, 15F

10/17 11:22, , 16F
原po 誤會了什麼吧...
10/17 11:22, 16F

10/17 11:23, , 17F
基本上轉型是設計最通常的方法,樓上的大大就有給出例子
10/17 11:23, 17F

10/17 11:23, , 18F
float f = 1,若照你直接給binary 的想法,這個f 等於 0.0
10/17 11:23, 18F

10/17 11:24, , 19F
可是出來的f=1.0 ,hex 也是沿用這個想法,所以f2 才會那
10/17 11:24, 19F

10/17 11:24, , 20F
麼大
10/17 11:24, 20F

10/17 21:56, , 21F
http://ideone.com/aeHR0l 抱歉拖了一天
10/17 21:56, 21F

10/17 21:57, , 22F
我感覺我漏掉了什麼...
10/17 21:57, 22F

10/19 13:54, , 23F
union 吧 我猜
10/19 13:54, 23F
文章代碼(AID): #1O0TRtOX (C_and_CPP)
文章代碼(AID): #1O0TRtOX (C_and_CPP)