我有一个存储在无符号 __int32 中的浮点表示。我知道您可以重建数字字节移位,就像这个问题的答案中所指示的那样:
我想避免移位、乘法和求和,而只是重新解释这些位。我尝试了 IEEE 754 单精度条目的 Wikipedia 示例,但重新解释结果为 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;