之前探讨了关于计算机是怎样一步步被人类不断推进演变的过程,今天,我们将从抽象层面带大家感受一下计算机复杂的一面。
从昨天讲的,我们可以发现不论是通过装置上的一个单位,还是通过晶体管控制开关,计算机给我们的状态只有“开”和“关”,虽然只有两个状态,但是我们仍然可以用这两种状态表达很多重要的信息,这就是所谓的“二进制”。
你是不是很疑惑:既然二进制只有两个状态,那它肯定不能完成很复杂的工作咯?
答案是:是的,但是它却可以准确的表示你需要的值:‘true’和‘false’。
在计算机中,状态为“开”时,电流流过,用true表示;状态为“关”时,电流停止,用false表示。通常情况下,也会用0和1来表示二进制的状态。
上篇文章我们讲晶体管可以用来控制电流的开启和关闭,其实不然,晶体管还可以用来控制不同的电流水平。
早期某些电子计算机是三进制或五进制,表示他们的状态有3种或5种,但问题是:像这种状态层级越多,状态之间的区分也就会越模糊。
晶体管每秒有数百万次的变化,那中间存在的问题也会变得更加糟糕。
因此,将两个信号放在尽可能远的地方,即只使用 "开" 和 "'关"的状态,这样就可以在很多干扰问题种区分最明显的信号问题。
其实在计算机种使用二进制还有一个原因,那就是二进制在数学中有成熟的分支,它是专门用来处理‘true’和‘false’的问题,而且数学家们也已经研究出了操作二进制的所有必要的规则和方法,这个分支被称为“布尔代数”。
“布尔代数”来源于一位19世纪自学数学的英国数学家 'George Boole' ,他致力于研究亚里士多德的逻辑理论,亚里士多德逻辑法是以哲学为基础,Boole的方法则是使用逻辑方程式的方法去判断真假,这一方法在1847年他的第一本书《逻辑的数学分析》中提出。
通常我们学习到的都是常规代数,变量为数字,并对这些数字进行加减乘除等运算,但在布尔代数中,变量为‘true’和‘false’,并对这些变量进行逻辑处理。
布尔代数中的三个基本操作:“非”、“与”、“或”,这些操作都有他们自己独特的作用。
“非(NOT)”作用于单个布尔值,无论其是true或false,都会将其反转,即true转换为false,false转换为true。
在布尔值中,当输入为true时,输出为true;当输入false时,输出false,它并没有进行任何操作。
如果我们对其稍作修改,例如创建一个“非”电路,如果输入true,则输出为false;如果输入false时,输出将会是true,我们将刚刚创建的“非”电路称为“非”门。