我正在尝试将这些数字转换为二进制科学记数法,但我无法弄清楚这个过程。有人可以请求解决这个问题吗?
对于IEEE 754单精度浮点数,用二进制科学记数法写的数字是多少,其十六进制表示如下?
0061 0000
我可以将其从十六进制转换为无符号二进制文件:
<00> 0000 0000 0110 0001 0000 0000 0000 0000
但我无法弄清楚如何使用二进制科学记数法正确表示这一点。提前谢谢!
答案 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
。这个例子是在这里做出的假设。