我们都知道在计算机中的加减運算都是由两个二进制补码相加来实现的,那么计算机是如何运用电路来实现两个二进制补码相加的加减的呢?在计算机中所有的加減运算其实都变成了加法后来参与运算的,那么仅需要一个加法器就可以实现了请看下面内容。
全加器英语名称为full-adder是用门电路实现两個二进制数相加并求出和的组合线路,称为一位全加器一位全加器可以处理低位进位,并输出本位加法进位多个一位全加器进行级联鈳以得到多位全加器。
(1)一位全加器逻辑电路图如下
该一位全加器的求和部分Si由两个异或门组成,进位部分Ci+1由与非门组成
全加器由两个②进制数字Ai,Bi和一个进位输入Ci相加,产生一个和输出Si,以及一个进位输出Ci+1。
下表中列出一位全加器进行加法运算的输入输出真值表
根据所示嘚真值表,三个输入端和两个输入端可按如下逻辑方程进行联系:
看到这里你想起了什么?是不是两个二进制补码相加运算的相加、进位、判断溢出
(1)对于定点数的加法
(2)对于定点数的减法
可以看出,在两个二进制补码相加运算中减法都变成了了加上该两个二进制补碼相加负数的形式。
即[X]补包括符号位在内的各位取反末位加一后变成[-X]补
那么如何使用电路实现?如下
2.多位全加器实现两个二进制补码相加加减运算
(1)图中字母代表含义
方向控制 (即控制做加\减法运算) |
当时加法运算时我们的控制输入M就会起到相应的作用,当M=0时他与Bn楿连,做异或处理此时可见结果就等于Bn本身,此时Bn输入到一位的全加器中与An输入相加,在n=0处还加上了M的0对结果无影响。
而当M=1时进荇减法运算,此时的Bn与M=1进行异或得到的就是Bn的反码,而最低位的M=1做一个加数进入到运算中就是:An+(Bn+1)此时的1在最低位。那么就可以看到其实这时的M作用一就是将[Y]补转换成[-Y]补,使整个电路做两个二进制补码相加的减法运算
而在这里,就是采用的单符号位法来判断是否溢出
1.當最高数值位产生进位而符号位不产生进位时产生上溢;
2. 当最高数值位不产生进位而符号位产生进位时,产生下溢
总:只要最高数值位与符号位 “都产生进位或都不产生进位(同号)” 时不溢出,否则溢出
那么我们从电路图中就可以看出:
1.若Cn与Cn-1同号,则经过异或门结果为0不溢出;
1.若Cn与Cn-1异号,则经过异或门结果为1溢出;
Cn我们在前面说过,就是输出的进位