穿越计算机的迷雾(第2版)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

3.2 用二进制做加法其实更简单

尽管讨论十进制加法对我们来说显得很轻松,但我们不应该停留在这里,毕竟它不是这一章的重点。现在,让我们接着讨论另外一个更重要的话题,它关系着我们的加法机是不是能顺利地造出来。

也许你已经知道(或者想到),二进制数也可以像十进制数那样进行各种数学运算,比如:

11101 + 110 =?

尽管已经对二进制有所了解,但大家并没有接触过与二进制有关的数学运算,所以肯定会毫无头绪。不要紧,我来给大家翻译一下。因为11101和110分别等于十进制数的29与6,所以这道题其实算的是

29 + 6 =?

当然了,结果应当是100011,即十进制数35。所以,在数学公理面前,不管你说的是外国话,还是中国话,也不管你用的是什么数制,都不重要。

我知道你这会儿在想什么。你一定觉得奇怪:“我就纳闷儿了,两个二进制数相加,就得到了另外一个二进制数,这是怎么得到的呢?”

我们知道,在做十进制加法的过程中有两点是比较重要的:一是必须掌握加法口诀;二是需要考虑进位。很不巧,如果要做二进制加法,这两点同样很重要,简直是避不开。

加法口诀的作用是让你念念有词地得出结果。前面已经说过,十进制加法有一大堆口诀,之所以有这么多,是因为十进制有0~9这十个基本数字,这百十来条口诀就是用这十个基本数字翻来覆去组合而成的。

相比之下,二进制加法的口诀会比较简洁,因为它只有两个基本数字:0和1。所以,口诀的前三句是

0加0等于0

0加1等于1

1加0等于1

不要被表面现象所迷惑,尽管十进制里也有0和1这两个数字,但前面这三条不是十进制加法,尽管站在十进制的角度来看它们毫无疑问也是正确的。

0和1可以有4种相加的组合形式,前面已经有了3种,还剩下最后一种,即“1”和“1”相加。现在,二进制加法和十进制加法的相似性已经到此结束,在二进制里,1+1=10,但加法口诀的规则是必须表示成进位的形式:

1加1等于0,进1

学习了二进制加法的口诀之后,现在,让我们实际做一下,操练操练。这回来个简单的,能说明问题即可,比如110 + 11。以十进制的眼光来看,它实际上计算的是6 + 3。

如图3.2所示,和十进制加法一样,两个要加起来的数先是右对齐,然后从最右边的列开始计算。

图3.2 二进制加法示意图

先是“0”加上“1”,这正好对应于口诀“0加1等于1”,所以这一列的和是“1”;

接着,是两个“1”相加,依据口诀“1加1等于0,进1”,所以这一列的结果是“0”,同时向左边产生一个进位“1”;

继续往左边来,这一列是个光杆司令,但不能直接拽下来,因为底下还趴着一个进位“1”。依据“1加1等于0,进1”,这一列的结果又是“0”,而且也向左边扔出个进位。但是,左边已经什么都没有了,这才是名副其实的光杆司令,那就直接把它拽下来吧。所以,最终的结果就是1001。

至此,我们已经得出110+11=1001。这个结果是不是正确呢?好办,翻到第2章,你就会发现,二进制数1001确实等于十进制数9。如果你还不放心的话,可以多找一些二进制数来试试。