将十六进制转换为IEEE-754单精度浮点二进制科学计数法

时间:2016-02-06 15:16:36

标签: binary floating-point hex ieee-754 scientific-notation

我正在尝试将这些数字转换为二进制科学记数法,但我无法弄清楚这个过程。有人可以请求解决这个问题吗?

  

对于IEEE 754单精度浮点数,用二进制科学记数法写的数字是多少,其十六进制表示如下?

     

0061 0000

我可以将其从十六进制转换为无符号二进制文件:

  <00> 0000 0000 0110 0001 0000 0000 0000 0000

但我无法弄清楚如何使用二进制科学记数法正确表示这一点。提前谢谢!

1 个答案:

答案 0 :(得分:4)

binary32分为3个部分:符号,指数(有偏见)和有效数(或分数)。

0000 0000 0110 0001 0000 0000 0000 0000
||        ||                          |
||        |\-- significand -----------/
| \ expo  /
\ sign

所以在这种情况下,

sign (negative) = 0, so number is positive
exponent (biased) = 0000 0000
significand = .1100001 0000 0000 0000 0000

如果指数(2的幂)处于最高值(1111 1111),则表示该数字是特殊的:无穷大或非数字。

如果指数为0,则偏差为-126,否则偏差为-127,并且应在该分数中添加隐含的1

sign = 0 (positive) or +1
exponent = 0 - 126
significand = 0.1100001 =  (binary) 1100001/10000000 = 97/128

+1 * pow(2, -126) * 97/128 = 8.9080431273251475213255815711373...e-39

注意:
提供在线转换器。 example
Endian:字节的解释顺序可能会有所不同。 0061 0000可以是00 00 61 00。这个例子是在这里做出的假设。