【问题标题】:How is single precision floating point number subtraction is done?单精度浮点数减法是怎么做的?
【发布时间】:2017-05-19 03:25:15
【问题描述】:

这是示例(我已提前将它们转换为十进制)。
A 是 01000001000010000000000000000000^2(十进制 8.5)
B是01000000000100000000000000000000^2(十进制2.25)

((+A)-(+B)) 应该是十进制的 6.25。 规范化 A 和 B 并匹配指数。

A = 1.00010 * 2^3
B = 0.01001 * 2^3

我可以在纸上减去这个。

1.00010 * 2^3
- 0.01001 * 2^3
'---------------
0.11001 * 2^3

这是 110.01^2,十进制是 6.25。

我的问题是 CPU 是如何解决这个问题的?我知道 CPU 会将 B 转换为二进制补码并添加负 B。但每次我尝试这样做时,我都会得到 6.75 作为答案。有人可以告诉我 CPU 如何将 B 转换为两个补码以获得负数,然后添加到 A 以获得 6.25 作为答案。 谢谢

【问题讨论】:

  • 你好 Dan,我想逐步了解 thr cpu 如何将 B 转换为二进制补码并将负 B 添加到 A。通过 seeg 一步一步地帮助我理解我的许多事情有困难。谢谢
  • 我认为我的问题很具体,它询问“cpu 如何在将数字转换为二进制补码后减去数字”。我可以用铅笔和纸做到这一点,但我不知道 cpu 是怎么做的。我特别需要在作业中展示 cpu 是如何完成的。谢谢,不尊重
  • CPU 如何做到这一点取决于架构,例如是先处理 sNaN、qNaN 和无穷大的特殊情况,然后计算结果,或者 CPU 是否并行处理这两种情况并在稍后阶段决定要做什么。 CPU 设计人员使用一些技巧来快速完成此操作或节省裸片上的相同空间。当然有一些简单的方法来计算减法。

标签: binary cpu-architecture single-precision


【解决方案1】:

我自己找到了答案。 Twos 也可以补充这里的工作。使用二进制补码(翻转位并加 1 位)将 B 转换为负值,然后将负数加到 A。但必须先计算带指数的小数部分。谢谢

【讨论】:

    猜你喜欢
    • 2018-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-23
    • 2020-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多