1. 计算机最早是机电设备,一般使用十进制计数
例如:用齿轮来代表十进制。
2. 再到晶体管计算机,只用「开 / 关」两种状态也可以代表信息,我们称之为「二进制」,意思是「用两种状态表示」
例如:自行车有两个轮子,双足动物有两条腿,
* 不同的是,晶体管可以不只是「开/关」,还可以让不同大小的电流通过。
3. 为什么一定要用二进制?除了二进制,还可以有更多种的状态吗?
* 也许你可能觉得两种状态不多,确实是这样。但如果只需要表示 true 和 false,两个值就够了。
* 二进制也可以写成 0 和 1 ,而不是 true 或 false,这些只是不同的表达方式。
* 一些早期电子计算机是三进制的,有 3 种状态,还有五进制,5 种状态。
* 问题是:状态越多,越难区分信号。
举例:如果手机快没电了,或者附近有电噪音,因为有人在用微波炉,信号可能会混在一起,而每秒变化百万次的晶体管会让这个问题变得更糟
所以,尽可能将两种信号分开,只用「开」和「关」两种状态,来尽可能减少这类问题
4. 计算机使用二进制的另一个原因:
* 有一整个数学分支叫「布尔代数」存在,专门处理「真」和「假」,解决了所有法则和运算,在布尔代数中,变量的值是 true 和 false, 能进行逻辑操作。
* 「乔治·布尔」是「布尔」二字的由来,是一位 19 世纪,自学成才的英国数学家。他有兴趣用数学公式来扩展亚里士多德基于哲学的逻辑方法,用「逻辑方程」系统而正式的证明真理。
1847年,第一本书「逻辑的数学分析」中介绍过,在「常规」代数里(在高中学的那种),变量的值是数字,可以进行加法或乘法之类的操作。
但在布尔代数中,变量的值是 true 和 false,能进行逻辑操作。
* 布尔代数有3个基本操作:
1)NOT:反转布尔值,也叫做“NOT门” 。叫“门”,是因为它可以控制电流的路径,可以把控制线,当作输入;底部的电极,当作输出。
2)AND :门,串联,必须有两条通路。
3)OR:门,并联,有一条电路通即可。
* 现在我们可以进行一次抽象:晶体管和电线依然在那里,我们只是用符号来代表而已。
4)异或,简称 XOR。
* XOR 就像普通的 OR, 但是有一个区别:如果两个输入都是 true, XOR 输出 false; 如果想要 XOR 输出 true, 一个输入必须是 true, 另一个输入必须是 false。
* XOR 非常有用,工程师给了它一个符号,一个 OR 门 + 一个笑脸。
* 现在可以把 XOR 放入「工具箱」了,不用担心 XOR 具体用了几个门,这几个门又是怎么用晶体管拼的,或电子是怎么流过半导体的。
* 再次向上抽象:
1 工程师在设计处理器时,很少在晶体管的层面上思考,而是用更大的组件,比如逻辑门,或者由逻辑门组成的更大组件;
2 就算是专业程序员,也不用考虑逻辑是怎样在物理层面实现的。
5. 总结
从电信号开始,到现在第一次表示数据,开始有点「计算」的感觉了。仅用这集讲的「逻辑门」,我们可以判断复杂的语句。
* 举例:[如果是 John Green] AND [下午 5 点后] OR [周末] AND [在比萨店附近],那么[John 想要比萨] = 真