在电子学中,加法器(adder)是一种用于执行加法运算的数位电路部件,是构成电子计算机核心微处理器中算术逻辑单元的基础。在这些电子系统中,加法器主要负责计算地址、索引等数据。除此之外,加法器也是其他一些硬件,例如二进制数的乘法器的重要组成部分。尽管可以为不同计数系统设计专门的加法器,但是由于数位电路通常以二进制为基础,因此二进制加法器在实际应用中最为普遍。[1]
构造一个全加器
全加器
全加器(full adder)将两个一位二进制数相加,并根据接收到的低位进位信号,输出和、进位输出。全加器的三个输入信号为两个加数A、B和低位进位 C i n C_{in} Cin。全加器的真值表为:
A A A | B B B | C i n C_{in} Cin | C o u t C_{out} Cout | S S S |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
1 | 0 | 0 | 0 | 1 |
0 | 1 | 0 | 0 | 1 |
1 | 1 | 0 | 1 | 0 |
0 | 0 | 1 | 0 | 1 |
1 | 0 | 1 | 1 | 0 |
0 | 1 | 1 | 1 | 0 |
1 | 1 | 1 | 1 | 1 |
如上所示,为1位的全加器,如果将一个1位全加器的 C o u t C_{out} Cout端接入另一个全加器的 C i n C_{in} Cin端,n个1位全加器串联,就可以得到一个n位的全加器。
从半加器开始
要想构造一个全加器,可以先不用考虑进位的情况,即没有 C i n C_{in} Cin端口。此时,这个加法器为一个半加器。半加器的真值表如下:
A A A | B B B | C o u t C_{out} Cout | S S S |
---|---|---|---|
0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 |
1 | 0 | 0 | 1 |
1 | 1 | 1 | 0 |
根据半加器的真值表,我们可以很轻松地画出逻辑门电路。
加入进位
在计算加法时,相同位上的数相加后,还要加上从低位进上来的数。
因此,下一步就是将半加器中的
S
S
S和
C
i
n
C_{in}
Cin在经过一个半加器。
处理进位
最后一步就是处理连续的两个半加器所产生的两个进位。只要任意一个
C
o
u
t
C_{out}
Cout输出1,最终结果就是该位一定向高位产生一个进位。因此只需要用一个或门将两个
C
o
u
t
C_{out}
Cout相连。
实际上,细心观察不难发现,不可能出现两个
C
o
u
t
C_{out}
Cout同时输出1的情况出现。因此,将或门替换为异或门也可以取得同样的效果。
至此,一个全加器就构建完成了。