【问题标题】:Basic Floating Point Questions?基本浮点问题?
【发布时间】:2016-06-04 08:03:56
【问题描述】:

我在 Book 上阅读了以下示例:

我认为最后一个 Representation 应该是 { 0 | 1 0 0 0 1 | 1 1 0 1 1 1 0 } 因为标准化形式的 11.10111010 是 1.110111010。有什么不对吗?

【问题讨论】:

  • 进行计算时,请始终应用基本原理来检查您的答案。我们正在添加两个不同的正数。结果必须大于两个输入中较大的一个,但小于较大输入的两倍。唯一可能的结果指数是 10010 和 10011。

标签: math binary floating-point add computer-architecture


【解决方案1】:

这些都是相同的数字:0.111*22、1.11*21、11.1*20乙>。看起来示例格式没有隐藏位,并将二进制点放在左侧。

【讨论】:

  • 我的问题是关于重新规范化部分。 !!
  • 当然,我的意思是x.y 规范化只是一种方法。在这种格式中,规范化显然意味着.xy,如果没有隐藏位,这是有道理的。
  • 你的意思是 { 0 | 1 0 0 0 1 | 1 1 0 1 1 1 0 } 与我问题中的最后一个数字相同
【解决方案2】:

您已经采用了相同的约定向前和向后。该示例不使用隐式前导 1/隐藏位,并且完全一致。

为了演示相反的选项,如果你的规范化包含一个隐式的前导 1/隐藏位,那么加数/被加数和结果应该是

 111.001000
+  1.10011010
--------------
1000.10111010

导致二进制编码结果

0|10011|00010111

【讨论】:

  • 11.10111010 的标准化形式是 1.110111010 可以吗?
  • 您声称隐式前导 1 用于从数字到浮点内存格式的反向编码。但是您也应该将此约定应用于前面将操作数从内存格式转换为数字的转换。
  • 我认为这个示例格式没有隐藏位。
  • @DigitalRoss:我会编辑它,我试图表明使用隐藏位,整个示例看起来会有所不同。
  • @LoveComplexity:规范化适用于内存格式的解释。您的两个数字仅显示除以 2。
【解决方案3】:

看了答案和cmets,我认为对“规范化”一词可能存在基本误解。 规范化并不意味着隐藏位。

这仅意味着最重要的非零数字将具有相对于小数点的特定位置。例如,在十进制中,1 可能表示为 100*10-2、10*10-1、1*100、0.1 *101 等。标准化系统可能需要使用例如0.1*101,将“1”位放在小数点右边。

在二进制归一化系统中,其中一位已知为 1。不存储该位是一种常见的选择,但作为规范化系统并不需要。

在示例的情况下,从输入在求和中的表达方式可以清楚地看出,没有隐藏位,归一化形式的最高有效位紧邻二进制点的右侧,无偏指数为 0表示为 10000。

二进制 11.10111010 等于二进制 0.1110111010,无偏指数十进制 2,二进制 10。这使得有偏指数为 10010,有效位为 1110111010 的最左边位。

【讨论】:

    猜你喜欢
    • 2015-08-09
    • 2011-06-07
    • 2016-08-28
    • 1970-01-01
    • 2023-03-31
    • 2011-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多