《Code》读书笔记12:二进制加法器

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Since20140504/article/details/79105300


读了《Code》第12章:二进制加法器,用自己的方式来总结一下。

计算机CPU本质上也就是集成电路,那么CPU是怎么实现最基本的加法的呢?

在电路中,只有2种状态(开、关),对应于二进制中的1和0;
但是我们可以把这2种状态组合起来,构造成多种逻辑关系。
与门 AND        (通过串联实现)
或门 OR           (通过并联实现)
非门 N             (通过反向器实现)
与非门 NAND  (串联的反向)
或非门 NOR     (并联的反向)
异或门 XOR      (正向加反向的串联)

电路不能做算术运算(+-*/),只能通过做逻辑运算来实现算术运算。

对于1位的2个二进制相加共有4种组合形式:
0 + 0 = 00  //上一位进位为0
0 + 1 = 01  //上一位进位为0
1 + 0 = 01  //上一位进位为0
1 + 1 = 10  //上一位进位为0
我们可以看到输出由两部分组成:加和输出,进位输出。
加和输出的结果是(0110),我们可以观察出来是“异或”的结果。
进位输出的结果是(0001),我们可以观察出来是“与”的输出。

在这里还没有完,因为我们还要考虑到前1位的进位。上述的进位输入是0。
假设进位输入是1:
0 + 0 = 00 + 1(上一位进位) = 01
0 + 1 = 01 + 1(上一位进位) = 10
1 + 0 = 01 + 1(上一位进位) = 10
1 + 1 = 10 + 1(上一位进位) = 11

借用书中的一个图:

输入端A和B先逻辑运算一次(异或+与),然后"和输出"和"上一位进位输入"逻辑运算一次(异或+与),两次进位再做或运算,最终得出的结果还是由两部分组成: 加和输出,进位输出。
这只是其中1位的二进制输出结果,如果是8位二进制,就需要将上图中的电路集成起来,形成8位二进制加法器。

我想,最重要的一点就是:集成电路通过做逻辑运算转换成算术运算。


猜你喜欢

转载自blog.csdn.net/Since20140504/article/details/79105300