作者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/cn.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