如果x
变量定义为float x
,如何将浮动值写为十六进制?
我不知道该怎么办,请指导我。
答案 0 :(得分:1)
Stricto sensu,你的问题没有任何意义。浮点数不是整数,因此不能用十六进制表示(基数为16)。
首先阅读http://floating-point-gui.de/。
也许您想以十六进制表示法输出浮点数。然后阅读printf的文档,如果您的C实现符合C99,请使用%a
,例如printf("x=%a\n", x);
。
也许您希望以十六进制输出float
的按位表示形式。这取决于您的机器的endianess(以及它使用IEEE754进行浮点表示的事实),因此输出在x86和ARM上不会相同。您可以使用union
type:
union {
unsigned u;
float f;
} un;
un.f = x;
printf("%#x\n", un.u);
当然,只有当sizeof(unsigned)
与sizeof(float)
相同时才有意义(即使在这种情况下,行为也是实现定义的)。
答案 1 :(得分:1)
在C99中,初始化十六进制fp的格式为float a=0x1.abcdefp-5;
指数是十进制的。