【发布时间】:2013-03-13 18:06:30
【问题描述】:
我必须将浮点数从二进制转换为可用的十进制数。
当然我的浮点数已经被分割成字节,所以总共 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。
【问题讨论】:
-
你为什么要手动做?
-
这是IEEE 754浮点数还是其他格式?
-
如果是IEEE 754,答案是否定的,不可能给出一个简单的公式来转换尾数,因为它的解释取决于指数。
-
sfstewman:不,它是在 UNIX 机器上用 C 语言创建的单精度 32 位浮点数。符号位:1 位指数宽度:8 位有效精度:24(显式存储 23) Patricia:我设置了完整位,因此即使它取决于指数,也可以进行转换,因为数据在那里。 Pieter:因为我是在第三方软件中做的,没有可用于此类任务的方法。
-
@pjercic:这很可能是一个单精度 IEEE 754 浮点数,但是您应该真正验证这一点,因为格式很重要,而且 C 和 Unix 本身都不够清楚,无法推断格式。 C 和 Unix 都适用于各种体系结构和各种浮点格式。
标签: math floating-point binary decimal