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

Ben*_*Ben 1 c memory floating-point pointers ieee-754

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

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

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

所以我问的原因是:我发现了一个线程,其中我了解到该模式可以按字节反转,但我没有发现它完全按位反转。

有人可以澄清一下吗?

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

截屏

250*_*501 5

字节顺序不是这里的问题,因为您对整个对象的值使用位移运算符。

您只需以相反的顺序打印出这些位,仅此而已。

首先开始打印最低有效位,然后网页从最高有效位开始。两种变体都是正确的。


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