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,

正好表示出我们想要的尾数部分。

而红色虚线下面是一个与门,正好表示进位的部分。这样用一个电路正好组装成计算机的最简单加法的原理。
这也就是计算机最底层的计算方式,只是当年用的是无数个继电器和灯泡,而现在用的是“超大规模集成电路”,其实原理是一样的!