【发布时间】:2016-03-21 07:54:29
【问题描述】:
我将数字 20 (0x14) 存储在 32 位寄存器中。该寄存器被分配给一个表示值 2.8e-44 的 C 浮点变量。现在我想取回浮点变量的十六进制表示并将其存储到一个整数变量中,以恢复信息的原始含义。除了做一些指针业务之外,还有更好的方法吗?代码如下:
#include <stdio.h>
int main()
{
float f = 2.802597e-44;
int nv,*pnv;
printf("f=%f\n",f);
printf("n=%d\n",f);
nv=(int)f;
printf("n=%d\n",nv);
pnv=(int*)&f;
printf("n=%d\n",(*pnv));
return 0;
}
我使用 pnv 整数指针得到我想要的。有没有更好的方法来避免使用指针并在 C 中工作?
【问题讨论】:
-
float type register那是什么? -
printf("n=%d\n",f);是 UB。 -
浮点型变量中的值 20 在哪里?我在
f中只能看到接近 0 的数字。 -
您 (i) 是否要将
float转换为整数(即在转换允许的范围内保留数值),还是要处理 内存 与float关联作为一个整数? -
@Jens 2.8e-44 的十六进制表示为 0x14。检查[链接]h-schmidt.net/FloatConverter/IEEE754.html
标签: c floating-point