加法器
加法器(Adder)
在本文构建一个加法器。
二进制加法
\[\begin{array}{r}
&111100\ \ \\
&\ \ 010110 \\
+&\ \ 101101 \\
\hline
&1000011
\end{array}
\]
在本式中,第一行表示前一位的进位,第二行表示第一个加数,第三行表示第二个加数。最后输出结果。发现每一位的加法需要三个输入和两个输出。
半加器(Half Adder)
构建一个半加器,可以将两个二进制数相加。
半加器有两个输入,两个输出。输入为两个二进制数的某一位,输出为相加的结果和进位。进位为1说明需要进位(Carry),为0说明不需要进位。
真值表
输入1 | 输入2 | 值 | 进位 |
---|---|---|---|
0 | 0 | 0 | 0 |
0 | 1 | 1 | 0 |
1 | 0 | 1 | 0 |
1 | 1 | 0 | 1 |
观察真值表,发现输出值与输入值之间为异或关系,进位与输入之间为与关系,可以画出:
全加器(Full Adder)
半加器只能计算两个一位二进制数的和,因为没有加入低位的进位处理。因此在此基础上构建一个全加器,可以计算两个多位的二进制数的和。
全加器有三个输入,两个输出。输入为两个二进制数的某一位和低位的进位,输出为相加的结果和进位。进位为1说明需要进位,为0说明不需要进位。
真值表
输入1 | 输入2 | 低位进位(ICarry) | 值 | 进位(OCarry) |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 1 | 0 |
0 | 1 | 0 | 1 | 0 |
0 | 1 | 1 | 0 | 1 |
1 | 0 | 0 | 1 | 0 |
1 | 0 | 1 | 0 | 1 |
1 | 1 | 0 | 0 | 1 |
1 | 1 | 1 | 1 | 1 |
相对于输出的值,全加器相当于两个半加器。
之后判断是否需要进位。如果仅两个输入即可进位,则需要进位;如果两个输入的和不足以进位,但加上低位的进位就可以继续进位,那么输出进位也为1. 因此可以将两个与门后接一个或门。如图
将其改为使用半加器的形式:
四位加法器
由四个全加器可以构成一个四位加法器,可以处理两个四位二进制数的加法。
一个四位加法器有9个输入,分别时两个四位二进制数和低位进位;输出有5个,一个四位二进制数和进位。
基本原理便是各位依次相加,并加上对应的进位。