I'm looking for a good explanation why (not how, I know that) binary subtraction is always (?) done by adding the complement etc. Is it just because of the extra logic gates that would be necessary or are there additional, more sophisticated reasons? For example, I could understand that it would be problematic if the result is negative - the representation might have to change. Can you think of more reasons?
问问题
2148 次
3 回答
5
考虑一个 8 位加法器。有 2 组 8 个信号进来,还有一个进位位。您可以构建 2 个几乎相同的电路,然后包含一个多路复用器来选择将哪个结果存储在结果寄存器中。或者,您可以在一个操作数的路径中添加单行 XOR 门。您可以通过与 1 进行异或运算得到补码。由于 XY = X + ~Y +1,您还可以将该“1”输入到加法器的进位输入中。你现在有一个稍微大一点的电路,可以做两个操作,而不是一堆更多的电路。您还可以将 0 输入一个参数并使用 XOR 门来实现 NOT。加法器也可以稍作修改,以执行其他操作——比如对两个操作数进行异或操作——只需很少的电路。这一切都可以追溯到要最小化门的小规模集成时代。从那以后,就没有理由以任何其他方式这样做了。74181 4 位 ALU 的电路图如下: 74181 说明
于 2011-03-09T14:48:54.787 回答
0
你已经一针见血了,这完全是关于骰子上的空间。为什么要用更多的电路使 ALU 陷入困境?那是可以用于逻辑的空间,或者更小的 ALU 和更多的内存。
于 2011-03-09T13:57:47.407 回答
0
在汇编级别上将减法分解为两个操作比在处理器电路中添加额外的功能更容易。本质上你只是添加你已经拥有的相同的东西,除了这将是一个单一的操作,如果你把它作为补码的加法,那么你可以重用加法和补码电路,而不是浪费处理器上的空间来添加什么你已经有了
于 2011-03-09T14:02:23.950 回答