电子数字计算机中的数

🏠 首页 《无线电》杂志 1974年 🔗 第1期 🔗 第5页 分类:“现代家庭电子制作”电视讲座辅导材料 🔗 史陆林 🔗

(上海交通大学 史陆林)在电子数字计算机中大都采用二进制的计算方法,不采用人们习惯的十进制数。为什么要采用二进制数呢?下面简单介绍一下二进制数及计算机中使用二进制数的原因。

二进制和它的优点

在生产劳动和日常生活中,数的进位制有很多种。平常用得最广泛的是十进制,如十寸为一尺,十尺为一丈等。此外还有十二个月为一年,十二支笔为一打的十二进制;六十秒为一分,六十分为一小时的六十进制,等等。二进制也是数的进位制的一种。同其它进位制一样,它也不是凭空想象出来的,而是人们在长期生产斗争和生活实践中总结出来的。我们通常把两只鞋叫做一双,正是应用二进制的实例,只不过应用不太广,我们对它不够熟悉罢了。

为了弄清二进制数的表示方法,我们还是先来看看十进制数。在十进制中,由0、1、2、……9十个数码,加上正负号、小数点等,就可以构成一个数。例如3365.88。十进制数是“逢十进一”的,同一个数所在的位数相差一位,其值就有十倍之差。因此3365.88这个数,可以写成

3365.88=3×1000+3×100+6×10+5+8×0.1+8×0.01

=3×10\(^{3}\)+3×102+6×10\(^{1}\)+5×100+8×10\(^{-}\)1+8×10-2

任何一个十进制数A\(_{(}\)+)都可以用上述法表示为

A\(_{(}\)+)=an×10\(^{n}\)+a\(_{n}\)-1+×10n-1+……+a1×10\(^{1}\)+a\(_{0}\)×100+a-1×10\(^{-}\)1+……+a\(_{-}\)m×10-m

与十进制数不同,二进制数是“逢二进一”的,它只有两个数码:0和1。由这两个数码,再加上正负号、小数点等,也可以组成一个数。同一个数码所在位数相差一位,其值则有二倍之差。例如二进制数11011,从右向左第二个“1”是第一个“ 1”的二倍,第四个“ 1”是第一个“ 1”的八倍,第五个“ 1”是第一个“1”的十六倍。用式子表示,就是

11011=1×16+l×8+0+1×2+l

=1×2\(^{4}\)+1×23+0×2\(^{2}\)+1×21+1×2\(^{0}\)

=16+8+0+2+1=27

即二进制数11011就是十进制数27。

对于任意一个二进制数B\(_{(二)}\),可以写成

B\(_{(二)}\)=bn×2\(^{n}\)+b\(_{n}\)-1×2n-1+…+b1×2\(^{1}\)+b\(_{0}\)×20+b-1×2\(^{-}\)1+…+b\(_{-}\)m×2-m

在电子计算机中采用二进制,是因为这种进位制具有下面的优点:

一、二进制只有0、1两个数码,易于用一种具有两个稳定状态的元件或设备来表示它。如一盏灯亮着规定为“1”,灯灭了就可算作“0”,这样一盏灯就可表示二进制数的某一位了。在电子计算机中用双稳态触发器输出的高电位和低电位来表示二进制数的“1”和“0”,n个双稳态触发器就能表示一个n位的二进制数。

二、采用二进制,可以用较少的元件或设备表示较多的数。如用七个双稳态触发器可表示2\(^{7}\)=128个二进制数,所用的状态是14种。而要表示十进制数中0—99这100个数,却需要能表示二十种状态的设备呢。

三、二进制数的四则运算和十进制数相同。因为它只有0和1两个数码,因此只要记住“逢二进一”、“借一当二”的原则,就可以容易地进行任何运算了。

二进制数和十进制数的换算

“事物都是一分为二的。”二进制虽有上面谈到的优点,但在电子计算机进行运算时,必须首先把需要运算的十进制数“翻译”成二进制数输入到机器中;计算所得到的二进制数结果也必须“翻译”成十进制数再输出给人们。因此必须掌握这两种计数制相互特换的方法。

首先来看一看十进制数是如何转换成二进制数的。分下面三种情况讨论:

一、十进制数A\(_{(}\)+)为整数,设它化为二进制数B(二):

A\(_{(}\)+)=B(二)=b\(_{n}\)×2\(^{n}\)+bn-1×2n-1+……+b\(_{1}\)×2\(^{1}\)+b0×20

为了求出等式右端的各系数,我们将上等式两端均除以2,得到

A\(_{(}\)+)2=bn×2\(^{n}\)-1+b\(_{n}\)-1×2n-2+…+b1×2\(^{0}\)+b\(_{0}\);2

根据两个相等的有理数其整数部分和分数部分必分别相等的定理,我们看出,A\(_{(}\)+)除以2后所得的余数就是b0。同样的道理,将A\(_{(}\)+)/2的整数部分再除以2,所得的余数就是b1。依此类推,这样就可以得到b\(_{0}\)、b1、…b\(_{n}\),从而得到B(二)了。

例如,我们用上述方法将十进制数19化成二进制数:

19÷2=9+\(\frac{1}{2}\),因为除后余数是1,故b\(_{0}\)=1

9÷2=4+\(\frac{1}{2}\), 因为除后余数是1,故b\(_{1}\)=1

4÷2=2+02,因为除后余数是0,故b\(_{2}\)=0

2÷2=1+02,因为除后余数是0,故b\(_{3}\)=0

1÷2=0+\(\frac{1}{2}\),因为除后余数是1,故b\(_{4}\)=1

于是十进制数19用二进制来表示就是10011。

二、十进制数A\(_{(}\)+)为小数,化成二进制数B(二):

A\(_{(}\)+)=B(二)=b\(_{-}\)1×2\(^{-}\)1+b-2×2-2+…+b\(_{-}\)m×2\(^{-}\)m

根据前面提到的定理,不难理解, A\(_{(}\)+)乘以2后所得的整数部分即为b-1\(_{(}\)+)的小数部分再乘以2所得的整数部分即为b-2,等等。

例如,将十进制数0.375化成二进制数:

.375×2=0.75,因为积的整数部分为0,故b\(_{-}\)1=0

.75×2=1.50,因为积的整数部分为1,故b\(_{-}\)2=1

.50×2=1.00,因为积的整数部分为1,故b\(_{-}\)3=1

于是十进制数0.375用二进制数表示就是0.011。

三、十进制数包括整数部分和小数部分时,分别变换整数部分和分数部分为二进制数,合并起来即可。

至于二进制数转换为十进制数,方法就比较简单了,只要把它用2的乘方的多项式表示,求出结果就行了。例如

10011.011=1×2\(^{4}\)+0×23+0×2\(^{2}\)+1×21+1×2\(^{0}\)+0×2-1+1×2\(^{-}\)2+1×2-3

=16+0+0+2+1+0+0.25+0.125

=19.375

即二进制数10011.011特换成十进制数为19.375。

二——十进制数

在计算机中,除了采用二进制数外,田于人们对十进制数比较习惯,因此也常用二——十进制数。在这种二——十进制中,基数还是10,但是十进制的每个数码都用一个四位二进制数表示,下表列出了它们的对应关系(通常称为8、4、2、1编码):

0 0000 5 0101

1 0001 6 0110

2 0010 7 0111

3 0011 8 1000

4 0100 9 1001

如果我们用二——十进制形式来表示数19.375,就应该写成:

0111001;9:001130111;701015

显然,用二——十进制形式表示一个数,比起二进制来要浪费不少触发器;两个数进行运算时,控制也复杂些。但是由于二——十进制数具有既能使用两种状态的物理器件来表示,又保持了十进制数的方便性,大大简化了由一种送位制向另一种进行制转换繁杂的优点,因此通常台式电子计算机中大多使用这种进位制形式的数,也较多地应用在通用电子计算机的外部设备中。