Code
再次拜读《Code》,深深被作者所折服,全文深入浅出,站在历史的长河上,从最简单的“手电筒”传递信息,一步一步揭开了计算机这个庞大的系统背后的本质原理,每次读起来都有不同的感受,给人一种拨云揭雾的感觉。个人认为它并不是一本入门级的读物,而是一本永不褪色的计算机科学经典著作。
亚里士多德认为真理是与逻辑相关的某种事物。古希腊人认为逻辑是追求真理过程中的一种分析方法,因此它被人们认为是一种哲学形式。亚里士多德最著名的三段论法:
” 所有男人都必有一死; 苏格拉底是男人; 因此,苏格拉底必有一死。”
这是很明显的两个真确条件推导出结论:
A & B=>C
这是一切逻辑学的基础。
计算机的出现最为关键的地方,我个人认为是,当科学家大佬们发现可以用电路来表示各种逻辑关系。
A & B和电路中的串联相似,只有都输入为1(假设高电平=1)则输出为1
A | B和电路中的并联相似,只要有一个输入为1则输出为1 |
依据以上,可以搭建一个简单的计算加法的电路。
在此之前,可以简单了解几个电器元件,如下分别为:
与门(即为一个串联电路)—-
或门(并联)—-
与非门(串联后面加一个反相器,使输出0变1,1变0)—-
计算机是怎样运行加法运算的?
都知道计算机是二进制码运算的,二进制的计算公式是:
0+0=0
0+1=1
1+0=1
1+1=10—->相当于01+01=10
联想到电路里面,对于一个电路(如上图),
A,B为输入点,假设有电流计作0,无电流计作1。
那么,针对与门:
只有A,B都输入为1就能通电(即输出为1),如下
0+0=0
0+1=0
1+0=0
1+1=1
针对或门:
只要A,B任意一个输入为1,就能通电(即输出为1),如下
0+0=0
0+1=1
1+0=1
1+1=1
针对与非门:
只有A,B输入都为0,就能通电(即输出为1),如下
0+0=1
0+1=0
1+0=0
1+1=0
仔细对照可见“与门”的I/O(输入输出),和“计算机的运算结果”的进位完全吻合0,0,0,1。
那么,计算的进位可以用“与门”代替,尾数如何解决?
尾数和I/O的对应关系必须是:
0+0=0,
0+1=1,
1+0=1,
1+1=0.
这样的话,一个并联电路显然是不够的,在此,前人们的智慧可见一斑,设计出令人佩服的电路,如下:
先只看电路红色虚线上面的部分,
当a=0,b=0时,输出为0,
a=0,b=1时,输出为1,
a=1,b=0时,输出为1,
a=1,b=1时,输出为0,
正好表示出我们想要的尾数部分。
而红色虚线下面是一个与门,正好表示进位的部分。这样用一个电路正好组装成计算机的最简单加法的原理。
这也就是计算机最底层的计算方式,只是当年用的是无数个继电器和灯泡,而现在用的是“超大规模集成电路”,其实原理是一样的!