Math 为什么二进制减法总是通过加法来完成?

Math 为什么二进制减法总是通过加法来完成?,math,binary,subtraction,Math,Binary,Subtraction,我正在寻找一个很好的解释为什么(而不是如何,我知道)二进制减法总是(?)通过添加补码等来完成。是因为需要额外的逻辑门,还是有其他更复杂的原因?例如,我可以理解,如果结果是否定的,这将是有问题的-表示可能必须改变。你能想出更多的理由吗 你已经一针见血了,这都是关于模具上的空间。为什么要用更多的电路使ALU停滞不前?这是可以用于逻辑的空间,或者更小的ALU和更多的内存。在汇编级别将减法分解为两个操作比向处理器电路添加额外功能更容易。本质上,你只需要添加你已经拥有的东西,除了这是一个单一的操作,如果你

我正在寻找一个很好的解释为什么而不是如何,我知道)二进制减法总是(?)通过添加补码等来完成。是因为需要额外的逻辑门,还是有其他更复杂的原因?例如,我可以理解,如果结果是否定的,这将是有问题的-表示可能必须改变。你能想出更多的理由吗

你已经一针见血了,这都是关于模具上的空间。为什么要用更多的电路使ALU停滞不前?这是可以用于逻辑的空间,或者更小的ALU和更多的内存。

在汇编级别将减法分解为两个操作比向处理器电路添加额外功能更容易。本质上,你只需要添加你已经拥有的东西,除了这是一个单一的操作,如果你把它作为补码的加法,那么你可以重用加法和补码电路,而不是浪费处理器上的空间来添加你已经拥有的东西。有2组8信号输入,以及一个进位。您可以构建两个几乎相同的电路,然后包括一个多路复用器来选择要存储在结果寄存器中的结果。或者可以在一个操作数的路径中添加一行异或门。通过与1进行XOR运算得到补码。由于X-Y=X+~Y+1,您还可以将该“1”馈送到加法器的进位输入中。现在有一个稍微大一点的电路,可以执行两个操作,而不是一堆更多的电路。您还可以将0输入到一个参数中,并使用XOR门实现NOT。加法器也可以稍加修改以执行其他操作,如对两个操作数进行异或运算,只需很少的电路。这一切都可以追溯到小规模集成时代,当时的大门被最小化。从那以后,就没有理由用其他方式来做这件事了。请参阅以下74181 4位ALU的电路图,该ALU可以执行一系列操作:

您可能想看看这个相关的问题:这是一个很好的提示。我以前在关于微处理器的书中见过74181 ALU,但没有小程序那么详细,特别是交互式的。