【问题标题】:Convert hexadecimal to IEEE-754 single precision floating point binary scientific notation将十六进制转换为 IEEE-754 单精度浮点二进制科学计数法
【发布时间】:2016-02-06 15:16:36
【问题描述】:

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

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

0061 0000

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

0000 0000 0110 0001 0000 0000 0000 0000

但我不知道如何使用二进制科学记数法正确表示这一点。提前致谢!

【问题讨论】:

  • 你能提供一些关于你被困在哪里的信息吗?例如,你了解 32 位 IEEE 754 二进制浮点数的格式吗?
  • 我是使用 IEEE 转换的新手,所以我对这个问题完全不了解。
  • 在这种情况下,我建议先阅读the relevant Wikepedia page
  • 我正在阅读我教授的一些讲义,但这些示例对我来说没有多大意义。你能解释一下如何从无符号二进制变为二进制科学记数法——即 0000 0000 0110 0001 0000 0000 0000 0000?谢谢!
  • 如果讲义对您没有意义,那么绝对是时候阅读至少一篇关于该主题的其他讨论了。如果你真的想成为一名计算机科学专业的学生,​​那么你需要学习学习计算机科学,这包括阅读概念并应用它们,而不仅仅是要求其他人为你解决特定问题。

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


【解决方案1】:

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),则表明该数字是特殊的: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

注意事项:
提供在线转换器。 example
Endian:解释字节的顺序可以变化。 0061 0000 可以是 00 00 61 00。这个例子在这里做了一个假设。

【讨论】:

  • 谢谢!你的解释比我在网上看到的更清楚。我最终浏览了维基百科页面here 并努力通过,因为这是几天前到期的作业。
  • 当我使用维基百科页面中的示例进行此操作时,我得到了 8.86212538 x 10^-39 作为二进制科学记数法的答案。我认为这是可以接受的,只是一个四舍五入的问题?我还没有从导师那里得到任何反馈。
  • @ComputerScienceStudent 8.86212538 x 10^-39 对于0000 0000 0110 0000 1000 ... 是有意义的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-18
  • 2013-10-04
  • 1970-01-01
  • 2021-04-23
  • 2016-04-02
  • 1970-01-01
  • 2014-06-18
相关资源
最近更新 更多