0
我有一个存储在unsigned __int32中的浮点型表示。我知道,你可以重建数字节转移,就像指示在这个问题的答案:将无符号整数重新解释为C++中的浮点数
Convert int to float in C (no casting)
我想避免的移位,乘法和资金,只是重新诠释位。我尝试了IEEE 754单精度入境,但在0
这里重新解释结果维基百科的例子是我的代码:
unsigned __int32 integer = 0;
unsigned __int32 mask = 0;
mask = mask + 1 << 30;
mask = mask + 1 << 29;
mask = mask + 1 << 28;
mask = mask + 1 << 27;
mask = mask + 1 << 26;
mask = mask + 1 << 22;
integer = integer^mask;
printf("%ld %d\n", integer, sizeof(__int32));
float* decimal = reinterpret_cast<float*>(&integer);
printf("%f", *decimal);
return 0;
尝试打印出来的'mask'到验证它是你期望它是什么,然后阅读[运算符优先顺序](http://en.cppreference.com/w/cpp/language/operator_precedence)。 – Praetorian 2013-03-20 18:00:11
这看起来大概如何我会尽力去做你说的话。你在这里工作的CPU是什么?各种汇编程序以不同的方式执行此操作(存储int;加载float;直接转换;等等)。在调试器中查看汇编程序输出应该能够让您知道哪里出了问题。 – 2013-03-20 18:02:17
啊,用括号括起来或掩饰你所有的东西是@Praetorian明智地暗示的。 :) – 2013-03-20 18:03:10