首页 理论教育进位计数制及转换信息技术基础实践

进位计数制及转换信息技术基础实践

【摘要】:进位计数制也称数制或进制,是指用一组数字符号和统一的规则来表示数值的方法。表1-1所示为计算机中常用的几种进位计数制及其特点。例1-1将二进制数101101.101转换为十进制数。例1-6将十进制数253.34转换成十六进制数。由于十六进制数的基数为16,二进制数的基数为2,两者满足16=24,所以,每位十六进制数可转换为等值的四位二进制数,反之亦然。

进位计数制也称数制或进制,是指用一组数字符号和统一的规则来表示数值的方法。日常生活中人们使用最多的是十进制,但还有许多其他数制,如表示星期数的7天制即七进制,表示月份的12月份制即十二进制等。在计算机编程时常用到的有十进制、八进制和十六进制,但它们最终都要转换成二进制数才能真正地被计算机处理。

1.进位计数制

不同的进位计数制所拥有的数码符号的个数是不同的,这个数就称为基数,常用R表示,并称其为R数制,其数码符号是0,1,2,…,R-1。如日常生活中常用的十进制数,就是R=10,即数码符号0,1,2,…,9;如取R=2,则为二进制数,数码符号为0和1。

不管是什么数制,所有的数据都可以“按位权值计数”,也就是说每个数位上的数码所表示的值等于该数码乘以该数位上的位权值。位权值,又称权值或位值,指的是某一位数码所表示的实际值的大小。如在十进制中,百位上的权值是100即102,个位上的权值是1即100,百分位上的权值是0.01即10-2

所以,十进制数9 673.21可表示为:

9 673.21=9×103+6×102+7×101+3×100+2×10-1+1×10-2

可以看出,各种进位计数制中的权值恰好是基数的某次幂。因此,任何一种进位计数制表示的数都可以写成按其权展开的多项式之和,任意一个R进制数anan-1…a1a0·a-1a-2…a-m可表示为:

(anan-1…a1a0·a-1a-2…a-m)R

=an×Rn+ an-1×Rn-1+…+ a1×R1 +a0×R0+ a-1×R-1+ a-2×R-2+…+ a-m×R-m

其中,ai为R进制数的数码,i=n, n-1,…,2,1,0,-1,-2,…,-m,且ai<R。表1-1所示为计算机中常用的几种进位计数制及其特点。

表1-1 计算机中常用的几种数制及其特点

2.各种制数之间的相互转换

计算机中常用的数制有十进制(D)、二进制(B)、八进制(O)和十六进制(H),这里说的就是这几种数制之间的相互转换。

(1)非十进制数R转换为十进制数。

对任意一个非十进制数R(二进制、八进制和十六进制),均可按照R进制数的按权展开式方便地转换成相应的十进制数。

例1-1 将二进制数101101.101转换为十进制数。

101101.101B=1×25+0×24+1×23+1×22+0×21+1×20+ 1×2-1+0×2-2+1×2-3=41.625D

例1-2 将八进制数25493.24转换为十进制数。

25493.24O=2×84+5×83+4×82+9×81+3×80+2×8-1+4×8-2=11083.265625D

例1-3 将十六进制数2B4D.3C转换为十进制数。

2B4D.3CH=2×163+11×162+4×161+13×160+3×16-1+12×16-2=11085.234375D

(2)十进制数R转换为非十进制数。

通常,一个十进制数包含整数与小数两个部分,将其转换为R进制数时要分两部分进行,将整数部分采用除以R取余法,小数部分采用乘以R取整法,然后再拼接起来即可实现。

例1-4 十进制数29.3125转换为二进制数。

① 整数部分的转换。用“除R取余”法实现十进制整数到二进制整数的转换规则是,用2连续除要转换的十进制数及各次所得之商,直到商为0时为止,则各次所得之余数即为所求二进制数由低位到高位的值。采用“除2取余”的计算过程(第一位余数是低位,最后一位余数是高位)如下:

所以29D =11101B。

② 小数部分转换。用“乘R取整”法实现十进制小数到二进制小数的转换规则是,将十进制小数不断地乘以R,直到小数部分为0,或达到所要求的精度为止(小数部分可能永不为零时就要考虑四舍五入,即在计算时要比实际要求多算一位出来,看多算出来的数值部分是要收一位上来还是要舍去),取每次得到的整数,这种方法称为乘R取整法。采用乘2取整的计算过程(第一位整数是高位,最后一位整数是低位)如下:

所以0.3125D=0.0101B。

最后,再把整数和小数部分组合在一起,即26.3125D=11010.0101B。(www.chuimin.cn)

例1-5 将十进制数253.34转换成八进制数(保留两位数)。

整数部分采用“除8取余”的计算过程如下:

小数部分采用“乘8取整”的计算过程如下:

小数点后第三位是6,八进制数中是三舍四入,要收一位到小数点后第二位中去,所以253.34D≈375.26O。

例1-6 将十进制数253.34转换成十六进制数(保留两位数)。

整数部分采用“除16取余”的计算过程如下:

小数部分采用“乘16取整”的计算过程如下:

小数点后第三位是0,十六进制数当中是七舍八入,这里要将其舍去,所以253.34D≈ FD.57H。

(3)二、八、十六进制数之间的相互转换。

① 二进制数与八进制数的转换。由于八进制数的基数为8,二进制数的基数为2,两者满足8=23,所以,每位八进制数可转换为等值的3位二进制数,反之亦然。

例1-7 将二进制数10010101110.11011转换成八进制数。

二进制数转换成八进制数时,以小数点为中心,分别向左、向右按每3位分成一个小节(首尾不足3位时用0补足),再将每一节转换成对应的八进制数,过程如下:

所以10010101110.11011B =2256.66O。

例1-8 将八进制数1237.626转换成二进制数。

八进制数转换成二进制数时,要将每一位八进制数用对应的3位二进制数表示(不足3位时,同样用0补足3位),若结果的首尾有0,应去掉,过程如下:

所以1237.626O =1010011111.11001011B。

② 二进制数与十六进制数的转换。由于十六进制数的基数为16,二进制数的基数为2,两者满足16=24,所以,每位十六进制数可转换为等值的四位二进制数,反之亦然。

例1-9 将二进制数10010101110.11011转换成十六进制数。

二进制数转换成十六进制数时,以小数点为中心,分别向左、向右按每4位分成一个小节(首尾不足4位时用0补足),再将每一节转换成对应的十六进制数,过程如下:

所以10010101110.11011B = 4AE.D8H

例1-10 将十六进制数3D1.6E2转换成二进制数。

十六进制数转换成二进制数时,要将每一位十六进制数用对应的4位二进制数表示(不足4位时,同样用0补足4位),若结果的首尾有0,应去掉,结果如下:

所以3D1.6E2H =1111010001.01101110001B。

从以上几个示例可以看出,二进制数与八进制数、二进制数与十六进制数之间存在直接转换关系。可以说,八进制数或十六进制数是二进制数的缩写形式。在计算机中,利用这一特点可把用二进制代码表示的指令或数据写成八进制或十六进制形式,以便于书写或认读。但八进制数与十六进制数之间没有直接的转换关系,可以借助十进制完成转换,但如果借助二进制作为桥梁来完成转换,会更直接更便利。

例1-11 将十六进制数49C.1F2转换成八进制数。

可以先将十六进制数49C.1F2转换成二进制数,再将其转换成八进制数,过程如下:

所以49C.1F2H =10010011100.00011111001B=2234.0762O。

反之,如果要将某八进制数转换为十六进制数,可以先将之转换成二进制数后再转换成十六进制数。