10-计算机怎么分析问题?
你好,我是悦创。
上一集,咱们讲了计算机使用的数学语言——二进制。虽然跟咱们经常用的十进制不太一样,但也是有了可以用来计算的数字了。
可光有数字还不行呀,你想,咱们在小学学完数字之后,接下来就要学加减乘除这些运算了。那计算机要想拿二进制的数字进行运算,也需要一套合适的运算法则。
你可能会说了,运算法则不就是加减乘除吗?还能有什么别的运算?你还别说,还真有,而且,这一套运算法则比加减乘除更适合计算机电路。这一讲,我就来给你说说这种新的计算法则。
计算机用的这套运算法则叫做逻辑运算,听起来有点陌生对吧?但它常见的三个运算法则,用一个小游戏就能理解。
现在想象一下,你是计算机芯片里的一个小元件了,咱们上一集说了,计算机里面只有“有电”和“没电”两种状态,咱们就用灯泡亮着表示有电,灯泡灭掉表示没电吧。逻辑运算的规则,只需要咱们开灯关灯就可以了。
第一种常见的运算法则叫做“非”,也就是不的意思。非运算要怎么做呢?很简单,你看一下前面的同学:如果他手里的灯是亮的,你就把自己的灯灭了;如果他的灯灭了,你就把自己的灯点亮。就跟他反着来,这就是非运算,很简单吧?

第二种常见的法则叫做“或”,就是或者的意思。现在你对面的同学手里有两个灯泡了,一手拿一个。如果他手上有灯泡是亮的,一个或者两个都行,只要有亮的,你就把手上的灯点亮,如果他手上两个灯都是灭的,那你就把灯关了,这就是“或”运算。

第三种常见的方法叫做“与”,假如你对面的人还是一手拿一个灯泡,如果两个灯泡都是亮的,那你就点亮自己的灯泡,否则就不开灯。

听着就很简单吧?这就是三种特别常见的逻辑运算,当然了,逻辑运算还有其他的运算规则,但也都和四则运算的规则很不一样。这一套运算体系,是数学家乔治·布尔建立的,所以这种算法又叫做布尔运算。

虽然布尔提出了这一套运算规则,但在布尔生活的时代,这套运算规则在实际应用中还特别少,人们关注程度也不太高。那后来这套规则是怎么被用到计算机里的呢?而且,为啥偏偏选中了这种计算规则,不用咱们熟悉的加减乘除呢?
这就要说到一位特别厉害的科学家了,他叫香农。现在音频封面上显示的,就是香农的照片。

你别看他一脸严肃的样子,他其实是一个特别爱玩的科学家。他不光爱骑独轮车玩杂耍,还喜欢制造奇奇怪怪的机器,比如,电动弹簧高跷、能自己找迷宫出口的电动老鼠,还有按一下按钮就会伸出一只机器手的盒子。
虽然他发明的东西听起来就很滑稽,但是这并不影响人家香农做科学研究,他可是一位超厉害的科学家。
有多厉害呢?你还记得咱们前面说的大科学家图灵吧?香农曾经就跟图灵一起讨论过关于“图灵机”的事情,“图灵机”的很多构想香农自己也都想过,而且更厉害的是,他觉得,“图灵机”不单单只是一个数学模型,现实生活中就可以造出类似图灵机的机器,用它来解决各种各样的问题。
当然了,香农并不只是简单想想,他还提出了一套实实在在的解决办法。
我们上一讲说到过,计算机电路里会用二进制的0和1来代表电路的开和关,把各种各样的数据信息都变成电信号,这个想法就是香农提出来的。但光有了0和1还不够,香农还需要找一套适合计算机的运算法则,不然也没法处理这些信息。

那为什么不用现成的加减乘除法呢?
我给你举个例子你就明白了,比如说加法,你可能觉得,咱们用一份电压表示1,那1+1=2不就可以用一份电压加另一份电压等于两份电压吗?
这样想倒是没错,但是按照这个规则,咱们就要用不同的电压来表示不同的数字。计算机做的运算一般都很复杂,那就会产生好多种不同的电压。
比方说吧,人类还真的制造过一种三进制计算机,它把电压分成了高中低三个档。结果,它计算起来就特别容易出错。那如果真的用加减法作为计算机的运算规则,用电压高低来区分数字,也会碰到类似的问题。
而且,早期的计算机还比较简单,如果旁边有其他机器的干扰,电压也很容易出现偏差,计算就会出错。所以,加减乘除法用在计算机电路里不太合适。
怎么办呢?巧的是,香农在读硕士的时候,看到了布尔提出的布尔运算。他觉得,这套规则用到电路里简直是太合适了。
你想,咱们前面说布尔运算的时候,是拿小灯泡的亮和灭打比方的,其实,小灯泡的亮和灭不就是计算机电路里面的有电和没电吗?

所以,布尔运算的规则再加上二进制,正好就可以让计算机处理信息。当然了,香农也在二进制和布尔运算的基础上构建了一套更复杂的体系,好让计算机能够进行各种各样的运算。
香农在读硕士的时候,压根就没有电子计算机呢。香农当时是想把二进制和布尔运算运用在电子电路里,要知道电子和电路可是现代电子计算机的基础,后来的计算机都是在这个基础上建造起来的。这么看来,咱们能用上手机、电脑还真得感谢香农呢。
另外,咱们今天用来给手机、电脑发送信息的数字信号,也是在他的理论基础上建立起来的,今天你能用手机听少年得到的课程,也得感谢香农呢。
那通过这两集,咱们了解了计算机最底层的信息处理方式,在它们眼里,一切信息都被抽象成了0和1,一起的运算法则呢,也都被抽象成了逻辑运算。
你可能会觉得,诶?咱们不是说编程吗?计算机到底是怎么处理信号好像跟编程没啥关系吧?咱们设计程序时又不需要管计算机里的电流是什么样的,哪个小灯泡亮着、哪个小灯泡灭了。你还记得咱们前面说过吧?编程思维中特别重要的一种思想是问题转化。
你想,咱们的计算机只通过电流的开和关传递信号。怎么用开和关这两个简单的信号解决复杂的问题呢?咱们用二进制的0和1来表示电流的开合关,又用布尔运算来对开和关的信号进行处理,这就是建立了一种方法把电流转化成了信号。
所以呀,二进制和布尔运算不仅仅是咱们的计算机能进行编程的基础,本身也是一种编程思维的运用。
那下一集,我要给你说一个更贴近咱们生活的技术,语音识别。在生活中,你只要对着手机或者是智能音箱喊一声它的名字,它就会立即回答你。那手机和音箱是怎么听见你喊它的呢?你可以把这一讲分享给小伙伴,跟他们一起讨论下。下一集,咱们就说说这件事。我们下集见。
更新日志
13787
-于