0

我必须将浮点数从二进制转换为可用的十进制数。

当然我的浮点数已经被分成字节,所以总共 4 个字节。
1 2 3 4
[xxxxxxxx][xxxxxxxx][xxxxxxxx][xxxxxxxx]

这 4 个字节已经转换为十进制,所以我有例如
1 2 3 4
[0][10][104][79]

现在尾数分为三个部分,两个最右边的字节(3 和 4)和字节 2,但没有 MSB 位(那个很容易屏蔽掉,所以假设我们在那里也有一个很好的十进制数)。所以三个十进制数。

这三个十进制数是否有直接的数学转换为浮点尾数?

这大致上是这样的:如果我需要得到一个整数,公式将是
10 * 65536 + 104 * 256 + 79。

4

2 回答 2

3

调用这些字节abc。我假设a已经被屏蔽了,所以它只包含有效数的位而没有指数,并且该数字是 IEEE-754 32 位二进制浮点数,字节以适当的字节序排列。

如果原始指数字段是 1 到 254(因此,不是 0 或 255),则有效数字为:

1 + a*0x1p-7 + b*0x1p-15 + c*0x1p-23

或者,等效地:

(65536*a + 256*b + c) * 0x1p-23 + 1.

如果原始指数字段为 0,则从总和中删除 1(该数字为次正规或零)。如果原始指数字段为 255,则浮点值为无穷大(如果abc均为 0)或 NaN(否则)。

于 2013-03-13T18:35:12.863 回答
2

我帮不上什么忙,因为我已经有一段时间没有进行转换了,但是我希望您发现本教程对您有用。

于 2013-03-13T18:17:43.770 回答