我写了一个程序来打印C中浮点数的位模式。
所以我期望得到一个标准的IEEE-754位模式,即: 1个符号位| 8个EXP位| 23个尾数位
当我得到输出并将结果放到IEEE-754转换器时,数字是错误的。当我一点一点颠倒顺序时,数字是正确的。
为什么我要问的是:我找到了一个帖子,其中我了解到该模式可能被BYTE-WISE反转,但我发现它完全没有被反转。
有人可以这样做吗?
这是程序,输出和转换结果的屏幕截图。 (如您所见,我将数字按相反顺序放入转换器中,结果对我来说很好。)
答案 0 :(得分:4)
Endianness不是问题,因为您在整个对象的值上使用了位移运算符。
你只是以相反的顺序打印出来的,只有那个。
您首先开始打印最低有效位,并且网页以最高有效位开始。两种变体都是正确的。
一个侧节点,你将float解释为int的方式是不正确的,它会导致未定义的行为。你应该使用宽度等于或大于float类型宽度的无符号整数,并使用memcpy。