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

Com*_*123 2 floating-point binary hex scientific-notation ieee-754

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

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

0061 0000

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

0000 0000 0110 0001 0000 0000 0000 0000

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

chu*_*ica 5

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

0000 0000 0110 0001 0000 0000 0000 0000
||        ||                          |
||        |\-- significand -----------/
| \ expo  /
\ sign
Run Code Online (Sandbox Code Playgroud)

所以在这种情况下,

sign (negative) = 0, so number is positive
exponent (biased) = 0000 0000
significand = .1100001 0000 0000 0000 0000
Run Code Online (Sandbox Code Playgroud)

如果指数(2 的幂)处于最高值 (1111 1111),则表明该数字是特殊的:Infinity 或 Not-a-Number。

如果指数为 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
Run Code Online (Sandbox Code Playgroud)

注:
可提供在线转换器。 示例
Endian:解释字节的顺序可能会有所不同。 0061 0000可能是00 00 61 00。在此示例中进行了假设。