进位问题与全加器
为解决进位问题, 改进了一位加法器的原型, 综合进位及显示的需要, 那么, 一个具有普遍性的一位加法器至少要三个输入, 其中有一个进位输入(Carry In); 以及两个输出(其中, CO 指 Carry out, 进位输出):
这样的一个东西, 我们称之为 全加器(Full Adder,FA).
内置的全加器
显然, 全加器比半加器更为完善, 它才是多位加法器里头能独立承担一位加法任务的那个部件.
模拟器里也直接内置了全加器这个组件, 通过 菜单--绘制--数字芯片--添加加法器
可以添加全加器:
注意, 新版本中, 默认添加的是四位的加法器, 你需要编辑其 #的位
属性, 将默认值从 4 改为 1, 即可获得 1 位的加法器, 也即是全加器.
另外, 它的引脚的名称及位置与我们给出的原型稍有不同, 但核心还是一样的.
它把 进位输入 叫成了
Cin
, 进位输出则还是C
此外, A, B, S 还分别加了数字编号
全加器构建的多位加法器
在先前, 当尝试用多个 半加器 去构建多位加法器时, 碰到了问题, 3+1=2:
现在, 把半加器改为全加器, 并把低位的进位输出接入它紧邻的下一个高位的进位输入上, 情况就 OK 了:
两位加法器, 使用全加器 在线可互动操作示例
可以看到, 现在情况 OK 了, 3+1=4.
另: 这里和最终是三位, 包括进位也用上了.
当两个加数都是两位时, 和就要三位了. 正如前面, 两个一位的加数, 和就有两位那样.
走线稍显凌乱, 注意有黑色小圆点的才是相互连接的, 没有的则单纯是导线互相交叉但没有连接.
现在的问题是, 怎么去构建一个全加器呢? 或者说这个内置的全加器组件, 它的内部结构到底是怎样的呢? 虽然模拟器内置了全加器, 我们直接就可以拿来用, 但若是不能明白它内部的结构, 我们恐怕还是不能放心的.
在下一篇章中, 再来探讨这个实现问题.