为什么要使用加法进行减法?

时间:2016-12-08 04:55:36

标签: verilog digital

我很好奇为什么我们使用加法在数字设计系统中进行减法。

我有预感,它与成本和性能有关,但我不明白如何省钱或提高效率。

1 个答案:

答案 0 :(得分:1)

这真的分为两个问题:

为什么不为每项操作使用专用电路?

设计中的每个额外电路都需要花费金钱和时间来设计,验证和分配空间,功率和时序的预算。如果我们可以设计一个可以处理多个操作的单个电路,我们将(几乎)总是领先一步。

在数字电路中," a + b"和" a - b"是两种不同的操作,需要不同的电路。幸运的是,在算术中," a + b"与" a +( - b)"相同,所以数学并不关心我们使用哪一个。一些非常聪明的人想出了一个聪明的代表,可以利用这个数学事实,即Two's Complement。这种表示允许容易地添加和反转正数和负数。

由于我们现在可以用一个电路实现加法和减法,因此没有必要创建第二个电路。

好的,为什么要添加?
如果操作现在可以互换,为什么我们实现了所有内容而不是减法?我只能推测这一点,但我怀疑有以下原因:

加法器电路不如减法器复杂:

半加法器:

enter image description here

半减法:

enter image description here

请注意,减法器添加了一个逆变器。每个晶体管都采用数字设计,因此在所有其他条件相同的情况下,我们应该使用更少元件的电路。

此外,添加只是一种更常见的操作。递增指令指针&其他内存地址,迭代器/循环索引和其他常规形成的值比向后退步更常见。如果我们选择自然地处理减法或加法(我们是,因为我们只将两个电路专用于两者),那么选择最常见的电路是有意义的。现在我们已经为减法操作添加了一个额外的步骤(转换为两个补码),但最好在更常见的加法操作中添加额外的步骤。

进一步阅读
EE.SE上有一个非常类似的问题:Addition and subtraction in digital electronics

此处SO:What is “2's Complement”?