如何用十六进制值表示要在c程序中使用的浮点数?

时间:2018-05-09 20:40:56

标签: c hex

如果x变量定义为float x,如何将浮动值写为十六进制?

我不知道该怎么办,请指导我。

2 个答案:

答案 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; 指数是十进制的。