在我小时候的印象里,对于计算机的认识就是黑客帝国里面那种充斥0和1的绿色屏幕,后来知道了计算机的一切一切都是基于二进制,那么怎么能从简单的二进制变为现在这些网络世界的,现在我们来一起设计一个二进制的加法器吧
首先了解基本的逻辑门
简单的只有0和1是组成不了什么东西,记得小学的科学课上让我们动手去用开关连接灯泡吗?
这些就是计算的重要组成部分----逻辑门。分别对应非、或、与。
将与或与非门组成会产生或非门和与非门
分析二进制的加法
为什么计算机不用我们熟知的十进制运算而是用二进制,因为十进制需要记住10以内的加法表。但是二进制你只需要知道
00 | 01 | |
---|---|---|
00 | 00 | 01 |
01 | 01 | 10 |
其中01和01相加会产生一个进位,所以我们设计加法器的时候需要分开计算,加和计算和进位计算。
进位计算是计算俩数的进位结果
进位 | 0 | 1 |
---|---|---|
0 | 0 | 0 |
1 | 0 | 1 |
回想一下之前的逻辑门,是不是像与门,对啦!加法器就是通过与门来算俩数的进位
加和计算是计算俩数相加的结果
加和 | 0 | 1 |
---|---|---|
0 | 0 | 1 |
1 | 1 | 0 |
现在再次回想一下之前的逻辑门,发现没一个是跟这个表相同,不过再观察一下你会发现,那与非门和或门的重叠处就是跟这个表一毛一样
与非门 | 0 | 1 |
---|---|---|
0 | 1 | 1 |
1 | 1 | 0 |
或门 | 0 | 1 |
---|---|---|
0 | 0 | 1 |
1 | 1 | 1 |
所以我们加工一下
把或门和与非门的结果再次用与们计算,结果就跟加和的输出一样了
这种设计又被称为----异或门
现在一切就绪,我们开始设计加法器吧!
加法器设计
现在有了加和器和进位器就可以设计加法器了,把想要加的俩个数同时经过或门和异或门
这样就会产生一个加和输出和进位输出。这样就完成了吗?不,只能算完成一半,这个能计算俩个数相加,但是有时候计算需要加算上一次的进位,所以应该有3个数字参与运算,所以将上面这种加法器称为半加器,简化为下图
全加器
全加器是由半加器与与门组合,可以在计算俩个数的基础上再计算与上一位运算所产生的进位
这样就构成了一次完整的加法,全加器简化为下图
拼装
现在在把全加器拼装在一起,每一次的进位结果链接到下一次的进位,最后一位的进位结果连接上灯泡,再把每一位的加和结果连接上灯泡,第一位的进位输入用地线连接,所以第一位的进位为0
至此就完成了一个八位的加法器