二进位计数制的优点
我们最习惯的计数制是十进位计数制(简称十进制)。十进制是用十个数字(0-9)来计数,逢十进一。它是人类应用最广泛,并且具有很大作用的计数制。但是在我们生活中还有没有其它的计数制呢?有的。例如计时间:60秒为1分,60分为1小时。这就不是逢十进位,而是逢六十进位的。
十进制为人们普遍采用,主要是由于人有十个指头的缘故。但是,随着通信技术、自动控制和计算技术的发展,使用十进制就很不方便。比如拍发电报,如果用十进制数字编码,象中文电码那样,用0、1、2……9来编码,就需要有对应这十个数字的十种符号,在按电键时就要区分十种状态,这样不但报务人员极难掌握,而且技术设备上也有困难。因此,发中文电报时不直接发0、1、2、……9十种符号,而是把这些数字编成莫尔斯电码(或其它电码)来拍发。莫尔斯电码,就没有用十进制数字,而是利用点、划、间隔三种符号,只相当于三种数字。在这种情况下,只要在按电键时注意区分点、划、间隔三种状态就行了,十分简便。例如“0”用五划表示,“1”用一点四划表示,“2”用两点三划表示等等。在电子计算机里,如用十进制数字编成各种指令代码,用十进制数字进行计算,也很不方便。因为一个元件或一个电路,较难做到具有十种彼此严格区分的状态。最容易做到的是两种状态。例如继电器接点的接通与开断,电子管的导电与闭塞,磁性元件的两个方向的磁化等等。因此,采用对应这类两种状态的数字来编码或计数,在实用上有很大的优越性。
利用两个数字来编码或计数的制度,就叫做二进位计数制(简称二进制)。在二进制中,通常采用0和1两个数字。利用0和1可以组成任何数,当然也就可以编成代表任何内容的代码。并且可以利用这样的代码,去控制具有两种状态的元件组合动作,完成自动控制或自动计算。
要了解二进制,首先必须懂得怎样利用0和1这两个数字来写出任意的数,也就是说一个十进制里的数在二进制里应当与成什么形式。其次,我们还须了解怎样用二进制数进行加、减、乘、除四种基本运算。
二进制数的写法
在十进制中,写0、1、2、……9等数时没有什么问题,因为这些数专门有相对应的数字。要写大于9的数时,就需要采用进位的方法,例如写数10,就用了两位,个位写0,十位写1。位数和数字结合起来,就可表示各种数。在二进制中,情况也相似。0和1两个数可以直接用0和1这两个数字写出。写数2时,就要用进位的方法了,第一位写0,第二位写1,写成10(读作一零)。写数3时,相当于10加1,即得11。写数4时,相当于10加10(即2加2),或者相当于11加1(即3+1),得:
10 11
+10 或 + 1
─── ───
100 100
从这里可以看出,二进制的重要特点,就是“逢二进一”。
一个十进制数,如果要写成二进制数,可以采用下述简便的方法。例如一个十进制数47,可以用2去连除47:第一次得商数23;再用2去除23,得11;再用2去除11,得5;再用2去除5,得2;再用2去除2,得1。把这些数排成下列表格,如果表格中间一列的数是奇数(单数),就在这个数的右边写上1,如果是偶数(双数),就在这数的右边写上0。最后按照从下向上的次序写下这些0和1,得101111,这就是47的二进制数。用同样方法,我们不难证明下表所列的一些数是相互对应的。
2 47 1
23 1
11 1
5 1
2 0
1 1
十进制 0 1 2 3 4 5 6 7 8 9 10
二进制 0 1 10 11 100 101 110 111 1000 1001 1010
现在再来看一看,一个二进制数怎样写成十进制数。
在十进制里,拿47来说,它实际是:10+10+10+10+7=47,也可以写成:
4(10\(^{1}\))+7(100)=47(注意10\(^{0}\)=1,任何数的零次方都等于1)。
这里10的指数(即10右上角的数)表示位数,个位(第一位)是0,十位(第二位)是1,百位(第三位)是2,千位(第四位)是3,依此类推。又例如十进制数2345,可写成
2(10\(^{3}\))+3(102)+4(10\(^{1}\))+5(100)=2345
象2(10\(^{3}\))+3(102)+4(10\(^{1}\))+5(100)=2345这类写法,实际上表示了写出数的一个普遍规律。在这个算式中,括弧内的10叫做计数制的基数,在十进制中基数就是10,在二进制中,基数就是2。例如二进制数101111,可用上述算式表示为:
1(2\(^{5}\))+0(24)+1(2\(^{3}\))+1(22)+1(2\(^{1}\))+1(20)=1(32)+ 0(16)+1(8)+1(4)+1(2)+1(1)=32+0+8+4+2+1=47
二进制数的算法
作二进制数的加法时,我们只要记住下面的两条规则就行了:
1)0+0=0,0+1=1;
2)1+1=10,即写一个0,并向左边一位进1。
例如:
11010
+) 1110
───────
101000
二进制的减法与十进制类似,在被减数的某位数不足时,向左边一位数借1,这时在十进制中相当于这位数加十,但在二进制中,相当于这位数加二。例如:
110
- 11
───
11
实际应用中是把减法变成加法,这样在电子计算机中加法和减法可以按相同的方法进行。减法变加法的方法很简单,即先求出减数的补数,然后被减数与补数相加,相加后把最左边的1去掉,就得出所求的答数。求补数的方法是:
1)遇到1就换成0,遇到0就换成1;
2)在末一位加1。
例如11010的补数是00101+1=00110=110。如果要1010-100=?可先求出100的补数为011+1=100(很凑巧,100的补数仍然是100),然后求出1010+100=1110,并把最左边的1去掉,得110,即1010-100的答数为110。
作二进制数的乘法时,我们只要记住:
1)1×0=0;
2)1×1=1。
很明显,这比十进制中的九九乘法表简单多了。例如11×110的算法为:
11
× 110
─────
00
11
11
─────
10010
可见计算方法与十进制的相同。
二进制除法比十进制除法简单得多,当被除数大于除数时商1,否则商0。例如1001÷100的算法为:
────
100 ) 10.01
1001
100
──────
100
100
───────
──
可见计算方法与十进制的相同。
总之,二进制数的算法,在了解十进制的算法以后,要简单多了。(曙生)