===》点我返回目录《===

我们继续深究下去,打破砂锅问到底。

上述介绍的补码系统粗看起来这是比较奇怪的表示,实际上不然,了解了几种运算后,就会明白补码表示是多么简便。

我们来看两个数的加减运算。a+b或者a-b。如果用我们平时数学上的表示,我们需要分别判断a和b的符号,加上运算符,就有8种组合:+++,++-,-++,-+-,--+,---,+-+,+--。我们的内部电路的运算需要判断八种情况,会比较复杂。

如果用补码,因为补码自身已经处理了正负数,所以只需要判断运算符是+还是-,如果是+就把a和b直接相加,如果是-,就先对b再次求补码,然后加a。

举例如下:

计算17+22=39,用八位二进制表示为00010001+00010110,结果为00100111。正确。

计算22-17=5,22的二进制表示为00010110,17的二进制表示为00010001。判断运算符为-,所以把17求补码,为11101111。然后加00010110,结果为100000101,现在最高位出现了一个进位1,扔掉,保留8位,最终结果为00000101,正确。

计算22-(-17),22的二进制表示为00010110,-17的二进制表示为11101111。判断运算符为-,所以把-17求补码,为00010001。然后加00010110,结果为00100111。正确。

从上面的例子可以看出,用了补码之后,无论正负数,都可以统一处理了,并且化减法为加法。

没错,所有的运算最后统一到加法了。你领略到补码的简便了吧。

我们自己试着做一个加法器。

先看加法运算表:

    0 1

0  0 1

1  1 10

因为是二进制,所以加法表很简单。

这个加法表里有一个不同之处,就是1+1=10,结果有两位,前一位是进位,后面的是值。我们需要分开处理,考虑进位,得到新的加法表:

    0    1

0 00 01

1 01 10

再把上表分开表示成加法表和进位表:

加法表

   0 1

0 0 1

1 1 0

进位表

   0 1

0 0 0

1 0 1

我们仔细看上表。加法表跟我们以前提到过的逻辑异或XOR操作是同一张表,进位表跟逻辑与AND操作是同一张表。这样我们可以用逻辑门电路实现加法,用一个异或XOR门和一个与AND门。二进制下,0/1,既是数又是状态,所以逻辑运算和算术运算在电路这一层统一了。

用门电路,这个加法运算这么搭建:

计算机内部探秘:统一到加法_公众号原创书籍

 

简化图为:

计算机内部探秘:统一到加法_公众号原创书籍_02

 

但是这个加法器弱爆了,只能算一个bit的加法,还不会考虑进位,我们把它叫半加器。

那我们就接着看看多个bit位的加法器怎么做,有了半加器,这个任务不困难,把A+B的和与前一步的进位再用半加器加一次,再把两个半加器的进位或门输出成本加法器的进位就可以了。即通过两个半加器加上一个或门组合成一个全加器。

计算机内部探秘:统一到加法_公众号原创书籍_03

 

简化图:

计算机内部探秘:统一到加法_公众号原创书籍_04

 

接下来,我们把这个加法器组合成8位的加法器。

计算机内部探秘:统一到加法_公众号原创书籍_05

 

相加的数据位A,B,从0到7每一位分别输入,前一位的进位输入到下一位。这样串连起来。

简化图为:

计算机内部探秘:统一到加法_编程语言_06

 

现在看是不是长得有点像一个芯片的样子了?很有科技感。

不过我们现在同时也看到了,实现一个简单的运算就需要好多电子元器件组合起来,非常复杂,闭眼就可以想到真正的计算机有多复杂。好在通过工程的方式,这些器件可以一点点组成更大的器件,越组装越大,最后我们花几十美元就可以直接买到一个叫CPU的组件了。

0和1单独拿出来做不了什么事情,这些基本门电路单个也没有什么功能,但是组合在一起可以达到神奇的结果。上个世纪五六十年代仙童公司Robert Noyce与德州仪器公司Kilby发明了集成电路,它通过半导体工艺把所需的晶体管、电阻、电容等元件及它们之间的连接导线全部集成在一小块硅片上。

现在在一个指甲盖大小的硅片上能放上亿个元器件,比如Intel Pentium的i7大概集成了14亿个晶体管。工艺是按照Moore定律发展的,当价格不变时,集成电路上可容纳的元器件的数目,约每隔18-24个月便会增加一倍,性能也将提升一倍。这是一种指数级的增长,总有一天会将人类带到临界点。

现在你只需要花几块钱就可以买一个芯片,不要忘记这是费了多少人多少年努力的结果。指甲壳大小的一块芯片,汇聚了人类千年万年的智慧。

当一个CPU的成本降到一张纸的成本的时候,奇点就会来临,人类历史必将进入下一个阶段。

想想很奇妙,一个简单的整数,一个简单的加法,通过叠层累加,最后构成了庞大的算术体系。为什么科学家会不停地探索大统一理论?就是基于这个信念:这个世界能用一个统一的理论解释全部的现象。