楼主:
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 *转型呢?
还请各位版大能为小弟解惑...谢谢!!
因为float f2 = 0xBF9DF3B6,所以f2 = 0xBF9DF3B6内存存放还有指标运用跟浮点数IEEE 754翻书多看一下
作者:
pttworld (批踢踢世界)
2016-10-15 15:51:00int i = 0xBF9DF3B6; float f = i;
作者:
pttworld (批踢踢世界)
2016-10-15 17:55:00楼上,多些口水可以淹死我但不一定能叫醒我。
作者:
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作者:
firejox (Tangent)
2016-10-19 13:54:00union 吧 我猜