.
前言:使用教材 阎石-《数字电子技术基础》(第六版)—高等教育出版社
.
首先我们先看加法是怎么实现的
对于两个只有一位数的二进制数相加
下面为四组计算,0+0 1+0 0+1 1+1
0 1 0 1
+ 0 0 1 1
0 1 1 (1)0
我们可以看到,
对于低位,只有两个数不同同的时候才为1,两个数同时为0或者1的时候都为0
然后高位的话,除了两个都是1的时候是1其他都是0
.
由于我们简单的逻辑运算单元与、或、非、与非、或非等,对于两个数的输入输出只有一个,要么你输出高位要么你输出低位。那就尴尬了是吧,我无论输出哪一位都不完整是吧。
那么怎么办,诶!我弄两个电路,没想到吧!我弄两个总可以吧,我用一个输出高位一个输出低位,那么两个都不会丢失是吧。
.
那么问题来了,高位和低位怎么弄成一个数呢,一个是高位,一个是低位诶,差了一个位。那我们在高位的后面加一个零,把他弄成两位的数,然后再和低位的相加。比如1+1,低位是0,高位是1,将高位弄成10再加起来不就是10了吗。
这不就相当于十进制5+7的时候,个位为2,十位为1,要得到结果是不是要将十位的1加个0变成10再和2相加是吧。
.
这个在后面补个零的操作叫做左移位,符号是<<。
其实左移的真正意义是,将数相左移动多少位,右边空缺的地方补0,移动n位后,数就变成原来的数乘以2的n次方。
.
我们说到弄两个电路来求地位和高位,然后将高位左移一位,再求和是吧。
那么低位怎么求,高位怎么求。我们看到低位是相同为0,不同为1,这不就是异或运算吗。
高位只有两个都为1的时候才为1,这不就是与吗,是吧。
诶,这就简单了。将输入同时接到异或电路和与电路,出来的就是低位和高位了。
所以加法器的电路实现是不是挺简单的。
.
.
下面我们看另外一个问题
011+001
1低位结果:010
1高位结果:001,移位后:010
1两者相加:010+010
.
2低位结果:000
2高位结果:010,移位后:100
2两者相加:000+100
.
3低位结果:100
3高位结果:000,移位后:000
3两者相加:100+000=100
.
我们发现当高位等于0的时候,其低位结果就是最后的结果
因此,加法器的结束标志是高位输出为0