将浮点数从二进制转换为十进制数

时间:2013-03-13 18:06:31

标签: math floating-point binary decimal

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

当然我的浮点数已分成字节,总共4个字节 1 2 3 4
[XXXXXXXX] [XXXXXXXX] [XXXXXXXX] [XXXXXXXX]

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

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

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

这就是说:如果我需要得到一个整数,那么公式就是
10 * 65536 + 104 * 256 + 79。

2 个答案:

答案 0 :(得分: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(否则为)。

答案 1 :(得分:2)

我无法提供太多帮助,因为自从我进行转换以来已经有一段时间了,但我希望您发现this tutorial有用。