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

标签 math binary subtraction

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

最佳答案

考虑一个 8 位加法器。有 2 组 8 个信号进来,还有一个进位。您可以构建 2 个几乎相同的电路,然后包含一个多路复用器来选择将哪个结果存储在结果寄存器中。或者,您可以在一个操作数的路径中添加一行 XOR 门。您可以通过与 1 进行异或来得到补码。由于 X-Y = X + ~Y +1,您还可以将该“1”输入加法器的进位输入。你现在有一个稍微大一点的电路可以做两个操作而不是一堆更多的电路。您还可以将 0 填入一个参数并使用 XOR 门来实现 NOT。加法器也可以稍微修改以执行其他操作 - 例如两个操作数的 XOR - 只需很少的电路。这一切都可以追溯到最小化门的小规模集成时代。从那以后就没有理由以任何其他方式来做这件事。可以做一堆运算的74181 4位ALU的电路图见下图: 74181 description

关于math - 为什么二进制减法总是(?)通过添加补码来完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5246744/

相关文章:

java - 使用什么数据结构来构建公式计算器

java - 当我单击“计算”按钮以显示我的结果时应用程序崩溃

math - 给定元素的当前边界矩形及其变换矩阵,计算未变换元素的边界矩形

python - 计算具有巨大中间值的总和

perl - 以字节/位的形式查看 Perl 变量

python - 我正在尝试减去这两个数据帧,但出现了 NaNs 而不是值

C# 将负 int 转换为 11 位

java - 将 int 数组的二进制表示形式的 1 的数量存储在另一个数组中

r - 用 NA 进行汇总和减法

math - CPU是怎么做减法的?