序言

我们可以稍微了解一下计算机,当身边的小朋友发问时,我们可以用我们自己的话来说向他们描述这个简单而又复杂的世界。

什么是二进制

布尔代数与逻辑运算的关系(让小朋友懂一点计算机)(1)

二进制

首先在想什么是二进制之前,想一下十进制,是的,我们一般人有十个手指头,十个脚趾头,我们可以从0数到9,记账用的是十进制,我们知道个十百千万这些数量级,但是,60秒是一分钟,60分钟是一个小时,24小时是一天,一年一般是365天。我们生活的世界很多刻度与进制都是人为规定的。同样,二进制也是人为规定的。如果用十进制来表达数字,那么每一个位上只能出现0到9这10个数字,那么二进制也同样的,如果用二进制来表达数字,那么每一个位上只能出现0或者1这两个数,这和十进制没什么不同,这是某个位上能用的数字少一些而已。然而,这种二进制方便了计算机。

早期的计算机也有其他进制,例如5进制,3进制,无论你是什么进制,毕竟计算机是用电信号来传递和操作信号的,进制越多,那么电信号的区分就越精细,比如0-1伏的电压表示1 ,1-2伏的电压电压表示2,等等,但是这样有一个问题,电路中出现的电信号虽然多,那么在比较恶劣的环境下就比较难以区分,比如,你在强电磁干扰的环境中,或者你的电池电量不多的时候,这个时候干扰就会影响到电信号的传输,这是为什么选择二进制的一个原因,用电路的连通表示1或者说 真 ,用电路的断开来表示 0 或者说 假 。此外,我们需要了解一下布尔代数。

什么是布尔代数

19世纪早期,英国数学家乔治·布尔(George Boole,1815-1864)突发奇想:人的思想能不能用数学表达?因此,它用数学式子扩展了亚里士多德基于哲学的逻辑方法。乔治·布尔是布尔代数前两个字的由来。

两千年来,哲学书都是用文字写的。比如,最著名的三段论:

所有人都是要死的,

苏格拉底是人,

所以,苏格拉底是要死的。

此前,数学只用于计算,没有人意识到,数学还能表达人的逻辑思维:

S X (R X D)

= (S X R) X D

= S X D

= S

这个式子的意思是,苏格拉底与会死的东西的交集,就是苏格拉底,即苏格拉底也属于会死的东西。布尔代数是一门可以把人对事物的逻辑思维判断转化为数学式子来进行运算的一门学科。因此,它的基本运算就是对的运算。在布尔代数里,变量的值是真和假,能对变量进行逻辑操作。

布尔代数的基本逻辑操作

NOT 操作

这个操作是取反。真值表如下:

如果变量的值为真,NOT后为假

如果变量的值为假,NOT后为真

布尔代数与逻辑运算的关系(让小朋友懂一点计算机)(2)

在上图中黄色线条的部分,是三极管的简化图,它有三个电极,上面和下面的电极,中间一条黄色横线代表是控制电极,在这里,要注意一下,输入端的确在控制电极这里,但是输出端,它在上方那根线那里,好,现在我们来看看情况:

当输入端(控制电极)有电流时,三极管会允许电流通过,这是输出端的电流会一股脑地流向接地这一端,(科学的解释需要用到物理学电学这块的知识),你可以把它想象为有一个巨大的水管把你们家的水放走了,所以你家的小水龙头里一点水都放不出来。

这时,输入为真,输出为假。

布尔代数与逻辑运算的关系(让小朋友懂一点计算机)(3)

非门输出真的情况

当输入端(控制电极)没有电流时,三极管不会允许电流通过,这是输出端的电流就在三极管这里停住,然后流向输出端,你可以把它想象为那个巨大的水管被关闭了,所以你家的小水龙头里可以放出水来。

这时,输入为假,输出为假。

AND 操作

AND操作,这个操作很像中文当中的并且,例如:只有电饭煲里有米并且插上了电源才可以煮饭。要想电饭煲能煮上饭,需要满足两个条件,一是插上了电源,二是电饭煲里要有米饭,这有这两个条件都为真的时候,我们才能说电饭煲能煮上饭,只要有一个条件不成立,那整个命题就是假的。

布尔代数与逻辑运算的关系(让小朋友懂一点计算机)(4)

与门输出假的情况

为了实现这种逻辑结构,我们可以串联两个三极管,如上图,只要其中一个三极管的控制电极没有电流,那么,整个电流都不会实现连通。

布尔代数与逻辑运算的关系(让小朋友懂一点计算机)(5)

与门输出真的情况

如果两个三极管的控制电极都有电流,那么结果才为真。

真值表如下:

如果变量A的值为真,变量B取真,AND为真

如果变量A的值为真,变量B取假,AND为假

如果变量A的值为假,变量B取真,AND为假

如果变量A的值为假,变量B取假,AND为假

OR操作

OR操作,这个操作很像中文当中的或者,例如:你爸爸给了你100块钱 或者 你妈妈给了你100块钱,那么你就有钱买零食吃。如果你想你有钱买零食吃这个为真,那么只需要你爸给了你钱 或者 你妈给了你钱其中一种情况发生了就好了,当然两个人都给你钱就更好了(嘻嘻嘻)。这种逻辑结构,我们可以并联两个三极管,并联就有点像双车道,可以同时跑两辆车,两个车道不相互影响,一个车道路况的好坏,拥堵情况,都不会影响两外一个车道。

OR结构如下图

布尔代数与逻辑运算的关系(让小朋友懂一点计算机)(6)

或门输出为假的情况

如果两个三极管的控制电路都没有电流通过,那么,输出端也没有电流,那么这种情况就是假

布尔代数与逻辑运算的关系(让小朋友懂一点计算机)(7)

或门输出为真的情况

如果两个三极管的控制电路中有一个电流可以通过,那么,输出端有电流,那么这种情况就是真

布尔代数与逻辑运算的关系(让小朋友懂一点计算机)(8)

或门输出为真的情况

如果两个三极管的控制电路中电流都可以通过,那么,输出端也有电流,那么这种情况也是真。

真值表如下:

如果变量A的值为真,变量B取真,OR为真

如果变量A的值为真,变量B取假,OR为真

如果变量A的值为假,变量B取真,OR为真

如果变量A的值为假,变量B取假,OR为假

我们把上述的三个操作都抽象出来,把它们称为逻辑门,并且将他们固定下来作为一种基本电子元器件而存在,那么以后在电路中就可以用下面的符号来表示,

布尔代数与逻辑运算的关系(让小朋友懂一点计算机)(9)

逻辑门的符号表达

XOR操作

还有一种也很有用的逻辑操作叫做异或,但是它是由前面三个基本逻辑操作结合在一起的,在中文里面你可以把它理解为 要么...要么... 这种意思,例如今天晚上你妈妈问你晚上煮什么汤,你可以选择紫菜蛋花汤或者西红柿鸡蛋汤,但是你只能选择一种,如果你两种汤都选,你妈妈就会不高兴,然后不煮汤(我感觉这个例子很真实,因为我妈就是这样的),所以你要想今天晚上有汤喝,那你要么选择紫菜蛋花汤,要么选择西红柿鸡蛋汤,你不能两样都选,当然,你可以两样都不选(emmmmmm....)。

布尔代数与逻辑运算的关系(让小朋友懂一点计算机)(10)

与或门的原理图

上图左边的弯曲的线表示两条线不想交,右边NOT们的黄色小圆表示取反操作

真值表如下:

如果变量A的值为真,变量B取真,XOR为假

如果变量A的值为真,变量B取假,XOR为真

如果变量A的值为假,变量B取真,XOR为真

如果变量A的值为假,变量B取假,XOR为假

资料来源

特此鸣谢 The Crash Course

本篇有许多的图片来源于网络,如有侵权,立即删除。

下集预告

二进制是如何表示数字,文字,图片,声音,还有视频的。


,