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

标签 c pointers memory floating-point ieee-754

我写了一个程序来用 C 打印出 float 的位模式。

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

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

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

请问有人能澄清一下吗?

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

Screenshot

最佳答案

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

您只需按相反的顺序打印出位,除此之外别无其他。

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


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

关于c - 与 IEEE-754 相比,内存中的浮点位模式按位反转了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41303354/

相关文章:

C Action 和变量

JAVA - 指针追逐 - 最佳实践

c - 在c中读取另一个字符串

iphone - 下载图像时出现内存警告和应用程序崩溃

谁能解决我的错误

c - 汉明重量(数字中1的个数)混合C与组件

c++ - 如何防止使用 ptrace 执行系统调用

c 使用 freopen 和 argv[1] 在终端中创建文件

c - 赋值使指针来自整数,无需在结构中进行强制转换

c++ - 无效的对象访问 C++