减法器
复习
- 加法器已经能把多位二进制数相加
- 补码让负数可以直接进入普通加法器
- 一个数按位取反再加 1,就能得到它的相反数
TL;DR
A - B就是A + (-B)- 让 B 按位取反,并把最低位进位设为 1,加法器就能完成减法
- 加法和减法可以共用同一套电路
正文
我们已经绕了两章的远路,终于可以回来回答最初的问题:加法器能不能做减法?
拿 5 - 2 来说。上一章已经告诉我们,4 位补码里的 -2 是 1110,所以:
0101 (+5)
+ 1110 (-2)
------
1 0011
4 位机器只保留低 4 位,结果是 0011,也就是 3。原来的加法器一根线都不用改,减法已经算出来了。
把“取反加一”也交给电路
不过,现在仍然要由人先把 2 改写成 -2。机器应该自己做这件事。
给电路增加一根控制线,叫作 SUB:
SUB = 0:做加法,B 原样进入加法器,最低位进位也是 0SUB = 1:做减法,B 的每一位取反,最低位进位设为 1
异或门正好能充当“受控制的取反器”:
B XOR 0 = B
B XOR 1 = NOT B
于是,送进加法器的其实是:
A + (B XOR SUB) + SUB
当 SUB = 0 时,它就是 A + B;当 SUB = 1 时,它就是 A + NOT B + 1,也就是 A - B。
一根控制线,让同一台机器学会了两种运算。这比另外造一整套减法电路省事得多。
把运算装进一个盒子
我们不再另造一套减法电路,而是复用加法器。前面花力气理解补码,回报就在这里。
现在,机器会加,也会减。更早以前造出的与门、或门等电路还能完成逻辑运算,但它们仍然散落在桌面上。每换一种运算就重新接线,显然不够像一台真正的计算机。
下一章,我们把常用运算装进同一个盒子,再用控制信号决定这一次要算什么。
思考题
在 4 位电路中,若
A = 0110、B = 0011,做减法时真正送进加法器的第二个数和最低位进位分别是什么?结果是多少?
小结
知识点
- 减法可以转化为补码加法
- 异或门可以受控制地决定是否取反
- 加减法器的统一表达式是
A + (B XOR SUB) + SUB
思考题答案(仅供参考)
SUB = 1,所以 B 先按位取反为 1100,最低位进位为 1。加法器计算 0110 + 1100 + 1 = 1 0011,丢掉最高位后得到 0011,即 3。
协议
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
封面图
设计师 | 南国微雪