我写了一个程序来用 C 打印出 float 的位模式。
所以我希望收到一个标准的 IEEE-754 位模式,即: 1 个符号位 | 8 个 EXP 位 | 23个尾数位
当我得到输出并将结果放入 IEEE-754 转换器时,数字是错误的。当我一点一点地颠倒顺序时,数字是正确的。
所以我问的原因是:我发现了一个线程,在该线程中我了解到模式可以按字节反转,但在任何地方我都没有发现它完全按位反转。
请问有人能澄清一下吗?
这是程序、输出和转换结果的屏幕截图。 (如您所见,我以相反的顺序将数字放入转换器,结果对我来说很好。)
最佳答案
这里的字节顺序不是问题,因为您对整个对象的值使用了位移运算符。
您只需按相反的顺序打印出位,除此之外别无其他。
您首先开始打印最低有效位,网页从最高有效位开始。两种变体都是正确的。
一个侧节点,您将 float 解释为 int 的方式不正确,它会导致未定义的行为。您应该使用宽度等于或大于 float 类型宽度的无符号整数,并使用 memcpy。
关于c - 与 IEEE-754 相比,内存中的浮点位模式按位反转了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41303354/