为什么二进制减法总是(?)通过添加补码来完成?

tmr*_*tmr 3 math binary subtraction

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

phk*_*ler 5

考虑一个8位加法器.有2组8个信号进入,还有一个进位.您可以构建两个几乎相同的电路,然后包含一个多路复用器来选择存储在结果寄存器中的结果.或者,您可以在一个操作数的路径中添加一行XOR门.通过XORing得到补码1.由于XY = X + ~Y +1,您还将"1"输入加法器的进位输入.你现在有一个稍微大一点的电路,可以做两个操作,而不是一堆更多的电路.您还可以将0输入到一个参数中,并使用XOR门来实现NOT.加法器也可以稍微修改,以执行其他操作 - 如两个操作数上的XOR - 只需很少的电路.这一切都可以追溯到最小化门的小规模整合日.从那时起,没有理由这样做.有关可以执行大量操作的74181 4位ALU的电路图,请参见以下内容: 74181说明