一种基于除余法的数制转换方法

2011-04-12 21:04程铁良常巧霞
关键词:次方数位基数

程铁良 常巧霞

(郑州职业技术学院,郑州 410121)

数制是人们利用符号进行计数的科学方法。日常生活中,我们用到的大都是十进制的数。其实数制有很多种,在计算机中,常要用到二进制、八进制、十六进制的数,所以计算机的许多基础学科中都涉及到了进制转换的问题。在实际教学过程中,笔者发现,好多学生不能正确、熟练地进行进制转换,或对进制转换的概念比较模糊。笔者根据多年的教学经验,就进制转换问题,提出一些思考或建议。

1 传统的数制转换方法

在许多教材中,关于进制的转换,一般是这样的:

1.1 二进制数、十六进制数转换为十进制数(按权求和)

二进制数、十六进制数转换为十进制数的规律是相同的:把二进制数(或十六进制数)按位权形式展开多项式和的形式,求其最后的和,就是其对应的十进制数——简称“按权求和”。例如:

(1)把(1001.01)2转换为十进制数

解:(1001.01)2

=1×23+0×22+0×21+1×20+0×2-1+1×2-2

=8+0+0+1+0.5+0.25

=9.75

(2)把(38A.11)16转换为十进制数

解:(38A.11)16

=3×162+8×161+10×160+1×16-1+1×16-2

=768+128+10+0.0625+0.0039

=906.0664

1.2 十进制数转换为二进制数 (除二取余法)

整数转换。一个十进制整数转换为二进制整数通常采用除二取余法,即用2连续除十进制数,直到商为0,逆序排列余数即可得到――简称除二取余法。

例:(1)将25转换为二进制数

解: 25÷2=12 余数1

12÷2=6 余数0

6÷2=3 余数0

3÷2=1 余数1

1÷2=0 余数1

所以25=(11001)2

1.3 二进制数与十六进制数之间的转换

由于4位二进制数恰好有16个组合状态,即1位十六进制数与4位二进制数是一一对应的。所以,十六进制数与二进制数的转换是十分简单的。

(1)十六进制数转换成二进制数,只要将每一位十六进制数用对应的4位二进制数替代即可,简称位分四位。

例:将(4AF8B)16转换为二进制数。

解: 4 A F 8 B

0100 1010 1111 1000 1011

所以(4AF8B)16=(1001010111110001011)2

(2)二进制数转换为十六进制数,分别向左,向右每四位一组,依次写出每组4位二进制数所对应的十六进制数――简称四位合一位。

例:将二进制数(111010110)2转换为十六进制数

解: 0001 1101 0110

1 D 6

所以(111010110)2=1D6H

转换时注意最后一组不足4位时必须加0补齐4位。

2 数制转换分析

2.1 数制的概念

首先,要理解数制的概念。数制是用一组固定的符号和统一的规则来表示数值的方法。其基本术语有:数码:数制中表示基本数值大小的不同数字符号。基数:数制所使用数码的个数。位权:数制中某一位上的1所表示数值的大小。

对于十进制来说,是以10为基数,有10个数码:0、1、2、3、4、5、6、7、8、9。小于10的是个位,从0~9,一位数,然后是十位,从10到99,2位数,依此类推百位、千位...对于二进制、八进制、十六进制来说基数分别是2、8、16,它们的个位数不同,二进制0~1是个位,八进制0~7,十六进制0~F(15),超过这些才能进位到下一位。十进制逢十进一,八进制逢八进一,这样八进制里只能出现0~7,如果个位到8了,就会自动进位,这样第二位变成1,第一位的数都进上去了,就变成0了,因此八进制超过8的数用两位表示。

2.2 按权展开式

对于任何一个数来说,都可以表示成加法的形式:

例如:256=2×100+5×10+6×1

这种方法叫按权展开,意思就是从高到低一级一级展开成加法的形式;对于一个八进制的数来说也是这样,只是在基数那儿有些区别,八进制是1、8、64、…

例如:271=2×64+7×8+1×1

对于十六进制来说,基数是1、16、256、4096…

例如:35=3×16+5×1

对于二进制来说,基数是1、2、4、8、16…

例如:110=1×4+1×2+0×1

总结一下基数,就是从0次方开始,然后一次方、二次方…相当于个位、十位、百位…。

2.3 数制转换的实质

数制转换相当于把数重新排一下,一般情况下我们是用十进制,对于一个数来说,个位表示几个、十位表示几十,百位表示几百,这样就很方便地知道一个数有多大。

例如255,我们知道这个数有二百、五十、五个,也就是右边起,第一位是个位表示有几个,这儿有五个;第二位是十位表示有几十,这儿有五十;第三位是百位,表示有几百,这儿有二百,总数共是255个。

对于八进制来说,总数是255个的时候,写成八进制的数是377,分析一下是怎么回事: 从右边开始,第一位是个位,这儿是7个。由于是八进制,第二位就不是十位了,而是八了,这儿有7个八也就是五十六。同样第三位也不是百位,而是六十四,这儿有3个六十四也就是一百九十二,总数仍然是255。

从这儿可以看出,总数相同的时候,表示成不同数制,数也不一样,关键是每个数位上的基数不同,例如对于十进制来说,第二位是十位,这个位置上的数一个顶十个,而对于八进制的第二位,这个位置上的数一个只能顶八个。

数制转换的时候只是把数按要求重新排列一下,比如转成八进制,就按八进制的要求排列,二进制就按二进制的要求排列。

八进制各个数位是:1、8、64、512…相当于十进制的个、十、百、千,按照8的n次方往后排;二进制各个数位是:1、2、4、8、16…相当于十进制的个、十、百、千、万,按照2的n次方往后排;十六进制的分别是:1、16、256…

3 另一种数制转换方法

转换的时候,必须要按照上面的要求来重新排列数字,基本方法是找出最近的一个数位,然后用除余法找出各个位置上的数。比如:

3.1 十进制转为八进制

以255为例。离255最近的数是第三位64,用255除以64,得3余63,第三位上求出来是3;用余数63除以第二位8,得7余7,第二位上求出来是7;用余数7除以第一位1,得7余0,第一位上是7;所有的数都摆好了,结果是377。

3.2 十进制转化为二进制

以15为例。跟数位表对一下,最近的是8,除一下得1余7,第四位是1;用余数7除以4,得1余3,第三位是1;用余数3除以2,得1余1,第二位是1;用余数1除以1,得1余0,第一位是1;所有的数位都排好,结果是1111。

当然,在实际操作中,两种数制转换方法不是截然分开的,而是相互结合、取长补短的。总之,学无定法,贵在动脑。只要勤动手,肯动脑,一切问题都可以迎刃而解。

[1]孟林.计算机文化基础教程[M].成都:电子科技大学出版社,2004.

[2]北大数学力学系.高等代数[M].北京:高等教育出版社,2000.

猜你喜欢
次方数位基数
一次性伤残就业补助金的工资基数应如何计算?
千万不要乱翻番
相同数位相加减
巧妙推算星期几
分清数位 照“位”读写
你了解“数位”吗
『基数』和『序数』
对齐数位 看前顾后
寻找1024的因数
手表+手链+戒指 N次方组合