在什么情况下,1 1不等于2?
我先声明一下,这不是脑筋急转弯,而是正经数学:布尔代数。
1 1=1
这就是布尔代数(逻辑代数),我刻意使用了“1 1”,而不是“一加一”,就是因为这里的“ ”并不是算数运算,而是逻辑运算。
一些读者可能会觉得这比脑筋急转弯还要贱,不过这真的是正经数学。
手机前的你,能用上手机,还多亏了布尔代数。一切程序代码、硬件电路的底层逻辑都是0和1,而0和1的底层逻辑就是:布尔代数。
可以说:计算机,建立在布尔代数之上。不管多么高端的芯片,都只是在执行布尔代数。
浅谈布尔代数布尔代数,是英国数学家乔治·布尔(G.Boole)在19世纪中期提出的理论。
乔治·布尔无论如何都想不到,他发明的这门数学,直接给20世纪的计算机科学铺平了道路(顺便也成了一部分大学生的噩梦)。
布尔代数本身还是很复杂的,只不过人们通常提到的布尔代数都是:关于0和1的代数。
就像学常见的“代数”之前,需要先学“算数”一样。在正式介绍“布尔代数”之前,必须先介绍“布尔算数”,也就是关于逻辑的算数。
- 通常的算数,使用的数字是:0、1、2、3、4、5、6、7、8、9。
- 逻辑算数,使用的数字只有:0、1。
布尔代数中的0和1,是在表示“真”和“假”,把逻辑关系变成数学运算。
- 通常的算数,经常使用的运算有:加、减、乘、除。
- 逻辑算数,经常使用的运算有:与、或、非。
在文章开头提到的“ ”,表达的运算就是“或”。典型例子就是“连代责任”:只要有一个人犯错,所有人都受罚,这就是“或”的思想。
当然,表示“或”的符号不只有“ ”,本文采用了数字电子技术中的表示方法。
“与”、“或”、“非”,其实都可以用“连代责任”来理解。
“或”假设只有两个人,“连代责任”可以理解成:只要有一个人犯错,两个人都要受罚,这就是“或”的思想。
如果:
- 1表示单个人犯错,0表示单个人不犯错。
- 1表示受罚,0表示不受罚。
只要有一个人犯错,两个人都要受罚,用逻辑算数表示就是:
1 1=1
1 0=0
0 1=0
0 0=0
如果用逻辑代数表示上面的式子,可以用A、B分别表示单个人是否犯错,用C表示是否受罚,只需要一个式子:
A B=C
只有当A=B=0的时候,C=0,两个人都不用受罚。
还可以画成“真值表”:
A | B | A B |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |