《编码 隐匿在计算机软硬件背后的语言》 - 加法是怎么计算的

2018-05-12  本文已影响131人  秦砖

IT业混了这么久,在没看到这本书之前,如果有人向我提出这么个问题,我第一反应应该是愣一下,然后扯一堆计算机通过二进制将两个数字加到一块等相关内容,但具体用的是怎么样的机制,我是回答不出来的。那么看下这本书中讲述的计算机是如何做加法的吧:

+ 0 1 2 3 4 5 6 7 8 9
0 0 1 2 3 4 5 6 7 8 9
1 1 2 3 4 5 6 7 8 9 10
2 2 3 4 5 6 7 8 9 10 11
3 3 4 5 6 7 8 9 10 11 12
4 4 5 6 7 8 9 10 11 12 13
5 5 6 7 8 9 10 11 12 13 14
6 6 7 8 9 10 11 12 13 14 15
7 7 8 9 10 11 12 13 14 15 16
8 8 9 10 11 12 13 14 15 16 17
9 9 10 11 12 13 14 15 16 17 18

上面是幼儿园小朋友就要学习的加法基础,它可以称得上是整个数学的基石了吧。同样计算机也有自己的计算基石,如下:

+ 0 1
0 0 1
1 1 10

如果分的再细一点,可以将这张表分成加法表与进位表:

加法表 0 1
0 0 1
1 1 0
进位表 0 1
0 0 0
1 0 1

能够发现加法表中做的是异或运算,而进位表中则做的是与运算。可以通过以下电路实现单位二进制数的加法:

半加器电路实现
忽略电路实现细节的黑盒半加器

A与B相加的结果通过进位输出与加和输出一同表示。半加器只能做一位二进制的加法,可以将两个半加器组合成全加器。

全加器电路实现
忽略电路实现细节的黑盒全加器

全加器实现了事进位的一位二进制数的加法,将多个全加器连起来,很自然地就能实现多位二进制数的加法了。

8位加法器

同样可以将8位加法器组合在一起形成16位加法器。到这里,是不是觉得原来计算机做的完全不是加法,而是电流在电路中的正常流动罢了,只是因为人类设计了其流动的方式进而达到了自己计算的目的。

上一篇下一篇

猜你喜欢

热点阅读