0

所以,在过去的几个月里,我一直在尝试了解计算机,并真正详细了解它们是如何工作的。我最近在学习减法器,我想知道..

首先,据我了解,减法器使用二进制的补码来获得结果。但是,为什么要减去呢?例如,2 的补码 5 (0101) 是 1011。但是,这也是正的 11。即使这个数字被否定了,是什么让减法器把它当作一个负数而不是另一个正数呢?如果问题是 8 - 5,是什么阻止了它做 8 +11?是什么让它从无符号位中识别出有符号位?我听说程序运行已决定,但问题是什么使程序能够决定是加还是减,以及如何将其解释给 CPU 和 AlU。

另外,我了解到 AlU 使用一种在加法和减法之间切换的电路。这个电路是如何工作的?是什么让它决定是加还是减?

最后,这个电路如何从加法切换到减法?我看到的唯一减法器是一个没有门的加法器?电路在可以改变功能的方面有何不同?

4

1 回答 1

0

减法只不过是第二个操作数是负数的加法。构建二进制补码,以便与负数相加只需按预期工作(忽略溢出时)。

ALU 不需要知道一个数是正数还是负数,但在二进制补码中,所有最高有效位设置为1的数都是负数。ALU 不在乎,因为二进制补码的设计使其一切正常。

现在,减法只是加法,所以我们可以使用相同的电路来执行这两个功能。您正在谈论的开关的作用是它否定第二个操作数(否定在二进制补码中很容易,有几种方法可以做到),然后将数字相加。

于 2013-07-24T07:54:34.880 回答