【问题标题】:Is this the right solution for the following floating point numerical?这是以下浮点数值的正确解决方案吗?
【发布时间】:2017-06-12 07:32:04
【问题描述】:

问题:

将数字 (+465) 以 10 为底表示为浮点数(二进制),24 位归一化小数,尾数为 16 位,指数为 8 位?

答案:

1) 将465转换成二进制等于111010001

2) 归一化二进制数 1.11010001 * 2 ^ 8

3) 添加 127 的偏差并将其转换为二进制 1.11010001 * 2 ^ ( 8 + 127 ) => 1.11010001 * 2 ^ 10000111 ( 135 的二进制表示)

4) 像这样组合在一起:10000111(8 位的指数)11010001 00000000(16 位的尾数)

注意:我没有包括符号位,因为问题没有提到它。

【问题讨论】:

  • 你应该在发布作业之前做一些研究。例如,this converterthis other converter 回答了您的问题,并且是“float to bin”的前两个 Google 结果。
  • @MargaretBloom 这不是家庭作业,我很困惑,而且这里的老师什么都不知道,谷歌也没有帮助。
  • @MargaretBloom,我也不确定“你的转换网站”是否正确,只是转换他们没有给出解释。所以你应该先分析问题,然后你才能投反对票。

标签: floating-point computer-science cpu-architecture


【解决方案1】:

是的,您的结果看起来是正确的,尽管您仍然需要为尾数的较低有效位添加零位才能得到总共 16;现在你只显示了 8 个。

【讨论】:

  • 喜欢这个“11010001 0000000”?还有一件事,如果我的指数是 300,那么单精度的偏差值应该是多少?顺便说一句,谢谢你的好意先生或妈妈,无论你是什么;)
  • 我还必须在这个特定问题中包含符号位吗?
  • @Ahti:300 的指数不能用单精度表示。您只能以二进制形式获得大约 -127 到 +127(左右)的值,而十进制中的值大约是 -38 到 +38。至于符号位......很难猜出你的教练可能想要什么。
  • 好的,这意味着我的单精度指数最大为 -38 或 +38,如果我的指数超过 -39 或 +39 或更大,那么我应该使用双精度?
  • 是的,双倍是显而易见的选择。
猜你喜欢
  • 2019-09-17
  • 1970-01-01
  • 2012-02-03
  • 1970-01-01
  • 2020-08-07
  • 2017-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多