[问题] 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