数字电路基础(五)算术运算电路
一、二进制加法电路
1.半加器和全加器
(1)半加器
半加器是一个只考虑两个一位二进制数相加,而不考虑低位进位的运算电路。如下图所示是半加器的逻辑图:
A A A和 B B B端的输入不同时, S S S输出的和为1;相同时,S输出的是0,符合二进制的加法运算规则。但当 A A A和 B B B都为1时,向高位会产生一个进位,此时 C C C的输出为1。
(2)全加器
在半加器的基础上,考虑本位数来自低位的进位,构成了全加器。根据二进制加法的规则,我们首先给出全加器的真值表,如下图所示:
根据真值表我们可以写出逻辑表达式:
S
i
=
A
i
⊕
B
i
⊕
C
i
,
C
i
+
1
=
A
i
B
i
+
C
i
(
A
I
⊕
B
i
)
S_i=A_i\oplus B_i \oplus C_i,C_{i+1}=A_iB_i+C_i(A_I\oplus B_i)
Si=Ai⊕Bi⊕Ci,Ci+1=AiBi+Ci(AI⊕Bi)
故可以画出它的逻辑图如下图所示:
全加器是计算机中最基础的算术逻辑单元。
2.加法器
这里只介绍行波进位加法器,这种加法器由于是从最低位开始做加法,逐步进位到最高位,随着位数的增多,其运算速度也会减慢。在连接电路时,加法器的个数等于被加数和加数的位数,尽管运算速度并不是很快,但它的连接是相对简单的。
如图所示是一个四位行波进位加法器的连接图:
二、二进制减法电路
虽然我们可以通过真值表列逻辑表达式的方式设计出半减器和全减器,但是我们一般使用加法器实现减法的功能。
1.二进制正负数的表示方法
(1)原码
原码是指在二进制数的最前面加一个符号位,正数的符号位为0,负数的符号位为1,其余各位表示的是数的绝对值,比如:+10110的原码是010110,而-10110的原码是110110.
(2)补码
正数的补码和它本身是相同的。
负数的补码是它本身的反码再加1,而它的反码则是出了符号位之外的所有数位全部取反得到的。例如:11101的反码是10010,再加1得到它的补码即:10011.
2.减法电路
由于减去一个数等于加上一个数的负数,减去一个负数等于加上一个正数,故我们可以用加法实现减法。我们在钟表中有这样的循环:
比如现在时间是13:00,我想要到达12:00,那么就有两种方式可以,一种是等待到11小时;一种是时间倒流1小时;再比如现在是20:00, 我想要到达15:00,那么也有两种方式,第一种是等待7小时(此时指针指向3),一种是时间倒流5小时。我们把等待的时间看做是加上一个数,把时间倒流看做是减去一个数,我们发现,加和减两个不同的数,得到的结果都是一样的,而且我们发现这两个数绝对值的和为12,是一个定值。因为时钟本身是一个循环,补码做减法的原理也是一样,补码和它本身的和始终是0,故相当于减去一个数相当于加上这个数的补码。
等我们需要实现这样的效果,使用之前所学到的加法器即可,只需要把加数转换为补码的形式再做加法即可。