如果想详细了解请访问门和电路——组合电路基本原理
任何减法都可以转化为加法,对于二进制的加减法的运算可以查看二进制及原码、反码、补码《计算机科学概论》原书第七版 重点内容分析,多个数的加法我们可以拆分为两个数的加法。
研究两个数的加法,我们可以使用逻辑门来实现半加器和全加器。
半加器可以实现二进制中一个位的加法运算。
我们只需要考虑一个位(或者最低位)
实现半加器的逻辑电路真值表如下(A、B代表两个被操作数,Sum表示加和,Carry表示进位):
A 0 | B0 | Sum | Carry |
---|---|---|---|
0 | 0 | 0 | 0 |
0 | 1 | 1 | 0 |
1 | 0 | 1 | 0 |
1 | 1 | 0 | 1 |
观察真值表,我们可以直接用异或门计算sum,然后使用与门计算Carry。
用布尔表达式可以写为:Sum=A·B Carry= A ⊕ B
半加器是有局限的,主要的原因是只能实现最低位的加法计算,如果涉及到进位,那么半加器是无法实现的,因此,我们引入了全加器。
全加器的真值表如下(C_in代表进位):
A1 | B1 | C_in | Sum | Carry |
---|---|---|---|---|
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 |
C_in的值是上一位的全加器(也就是carry)直接传递过来的。
在全加器中我们为了求得Sum和carry,需要使用两个半加器和一个或门,计算过程如下: