日常生活中有很多涉及到逻辑运算的地方,例如“如果这个周末天气好,我们也有空,就会去郊游”,这句话里就有逻辑运算,“周末天气是否好”、“我们是否有空”这是二个条件,只有当二个条件都满足时,“是否去郊游”这个结果才是肯定的,如果有一个条件不满足,郊游就泡汤了。很明显,这个逻辑与之前介绍的与门电路非常像,所以用门电路非常适合做逻辑运算,换句话说CPU不仅能做算术运算,逻辑运算更是它的拿手好戏。例如“判断一个数字是否是负数”、“判断所有输入是否为0”等等。
下面这个电路就可以判断所有输入A1-A8是否都是0,只有全部是0,最终输出才是1,否则输出就是0。
目前为止,我们将晶体管开关进行巧妙的组合,已经能够实现算术运算、逻辑运算了,按照惯例,我们将这样一堆电路进行封装,简化为一个符号,它被称为算术逻辑单元(或运算单元),简称ALU。
它具有二个8位二进制作为输入信号,同时还要告诉它做什么运算(加、减……),所以我们用一个4位二进制表示操作运算符(例如1000代表加法,1100代表减法……),输出结果也是8位二进制。与此同时,ALU还要输出一些标记,这些标记只有1位二进制,代表某种状态。例如如果输出结果为0,是否为0标志位就是1,如果输出结果为负数,是否负数标志位就是1,如果运算出现溢出(进位产生的),溢出标志位就是1。
至此我们已经创建了CPU的核心之一ALU,接下来我们还会了解计算机是如何存储数据的,最后我们会完整搭建一颗CPU!