与IEEE-754相比,内存中的浮点模式是否按位反转?

时间:2016-12-23 14:37:42

标签: c pointers memory floating-point ieee-754

我写了一个程序来打印C中浮点数的位模式。

所以我期望得到一个标准的IEEE-754位模式,即: 1个符号位| 8个EXP位| 23个尾数位

当我得到输出并将结果放到IEEE-754转换器时,数字是错误的。当我一点一点颠倒顺序时,数字是正确的。

为什么我要问的是:我找到了一个帖子,其中我了解到该模式可能被BYTE-WISE反转,但我发现它完全没有被反转。

有人可以这样做吗?

这是程序,输出和转换结果的屏幕截图。 (如您所见,我将数字按相反顺序放入转换器中,结果对我来说很好。)

Screenshot

1 个答案:

答案 0 :(得分:4)

Endianness不是问题,因为您在整个对象的值上使用了位移运算符。

你只是以相反的顺序打印出来的,只有那个。

您首先开始打印最低有效位,并且网页以最高有效位开始。两种变体都是正确的。

一个侧节点,你将float解释为int的方式是不正确的,它会导致未定义的行为。你应该使用宽度等于或大于float类型宽度的无符号整数,并使用memcpy。