布尔运算与开关电路

中央处理器central processing unit ,简称 CPU )是现代计算机的核心设备,负责执行计算机指令,并处理相关软件数据。处理数据时需要执行数学运算,这由内部的 算术逻辑单元arithmetic logic unit )负责,简称 ALU

顾名思义,CPU 的算术逻辑单元需要执行两种最基本的运算:

  • 算术运算,即对二进制整数执行加减乘除等算术运算;
  • 逻辑运算,即对二进制位执行按位逻辑运算;

逻辑运算指的是 布尔逻辑运算 ,它非常简单,也是实现其他数学运算的基础。本节便先拿布尔运算抛砖引玉,探索用电路实现运算的方法。

布尔逻辑

布尔逻辑是由英国科学家 乔治布尔 定义的逻辑代数系统,在电子学、计算机硬件和软件中应用非常广泛。逻辑学中只有 true ) 和 false )两种值,基于这两种逻辑值的运算便是逻辑运算,包括 等等。

我们先来看 AND )运算,是一种针对两个逻辑值的运算,表示同时成立:当且仅当两个变量的值都是真时,结果才为真。AND 运算的真值表如下:

AND False True
False False False
True False True

在计算机系统中,通常以二进制位表示真假,其中 0 表示假,1 表示真。AND 运算则演变为 按位与运算 ,操作符为 & ,对应的真值表如下:

AND 0 1
0 0 0
1 0 1

OR )运算也是一种二元运算,表示有一个成立:当两个变量的值有一个为真时,结果便为真。OR 运算的真值表如下:

OR False True
False False True
True True True

OR 运算对应的位运算是 按位或 ,操作符为 | ,真值表如下:

OR 0 1
0 0 1
1 1 1

ANDOR 不同,NOT )是一种一元运算。它只针对一个逻辑值进行运算,表示取反:当变量为真时,结果为假;当变量为假时,结果为真。NOT 运算的真值表如下:

NOT -
False True
True False

NOT 运算对应的位运算是 按位取反 ,操作符为 ~ ,真值表如下:

NOT -
0 1
1 0

那么,如何通过电路来实现这些逻辑运算呢?

与运算

如果您学过初中物理,应该对串、并联电路不会陌生。如下图,将两个开关串联起到什么效果呢?

在开关串联电路中,只有两个开关同时闭合,电路才能连通。同时闭合,即同时满足闭合这个条件,是一种典型的 AND 逻辑运算。因此,我们可以利用串联开关来实现 AND 运算。

回到上图,我们以开关闭合为 1, 断开为 0 ;电灯泡亮为 1 ,不亮为 0 。由此,我们得到一个 AND 运算电路,以两个开关作为输入,以一个电灯泡作为输出。

或运算

同样,您应该能够想到通过并联两个开关来实现 OR 运算:

在开关并联电路中,只要有一个开关闭合,电路就能连通。由此,我们得到一个 OR 运算电路,只要有一个输入为 1 ,输出结果就为 1 ;否则输出就为 0

非运算

我们通过简单的开关电路,实现了逻辑 ANDOR 运算的逻辑。那么,NOT 运算又该如何实现呢?

同样,通过初中物理知识,不难想到 短路 :正常工作的电灯泡,只要两端用导线连起来,就会形成短路。这时,电灯泡不再有电流通过,因而熄灭。

下面这个电路在电灯泡两端连接一个开关,开关闭合就形成短路:

在开关断开的情况下,电灯泡是亮的;开关一闭合,电灯泡就熄灭。如果我们以开关闭合为 1 ,断开为 0 ;灯泡亮为 1 ,不亮为 0 ;那么,输入跟输出刚好相反,由此得到 NOT 运算电路!

电路中的电阻起到保护作用,避免开关闭合短路时电路因电路过大而烧坏。

总结

本节,我们利用了电路中的串联、并联和短路原理,实现了 ANDORNOT 逻辑的运算电路。这些电路虽然还比较简单,用途却不小,也为我们下一步的研究打下了良好的基础。

由于开关需要手工控制,一个运算的结果输出无法直接作为下一运算的输入,使用起来不是很灵活。下节开始考察电磁继电器,即利用电磁铁实现的电控开关。在此基础上,继续学习利用继电器构建更灵活 逻辑门 的方法。

小菜自制计算机】系列文章首发于公众号【小菜学编程】,敬请关注:

【自制计算机】系列文章首发于公众号【小菜学编程】,敬请关注: