大学计算机:计算思维导学
上QQ阅读APP看书,第一时间看更新

1.4 基础知识:进位制及其相互转换

1.4.1 二进制、十进制与r进制

进位计数制是一种用数码和数位(权)表示数值型信息的方法。一个数由一定数目的数码排列在一起组成,每个数码的位置规定了该数码所具有的数值等级——“权”,该位置也称为“数位”,可区分数码的个数称为“基值”。该计数制又称为以基值为进位的计数制,数位的“权”值是基值的幂,计数中,某一数位累计到基值后,向高数位进一;高数位的一,相当于低数位的基值大小。日常生活中,常见进位计数制有十进制(自然数)、十二进制(月)、二十四进制(昼夜)、六十进制(小时/分钟/秒)等。在计算机中,还有二进制、八进制和十六进制等。一般地,以后缀 B 表示二进制数,后缀 O 表示八进制数,后缀H表示十六进制数,后缀D表示十进制数,或者以(数码串)r表示一个r进制数,如图1.5所示。

图1.5 r进制与十进制、二进制的概念比较示意

基值为rr进制数值N的表示方法为:

该数表示的十进制大小为:

(式1.1)。

式中:mn为正整数,n为整数的位数,m为小数的位数,dir个数码0,1,…, r-1中的任意一个,r为基值,ri为数位的权值,小数点位于d0r0的后面。

1.十进制

r =10时,表示十进制数。在十进制数中,10个数码为0,1,…,9。逢十进一,其数位权值为10i

示例14 (245.25)= 2×102+ 4×101+ 5×100+ 2×10-1+ 5×10-2

2.二进制

r=2时,表示二进制数。在二进制数中,2个数码为0或1。逢二进一,其数位权值为2i

示例15 (11110101.01)=1×27+1×26+1×25+1×24+0×23+1×22+0×21+1×20+0×2-1+1×2-2=(245.25)

3.八进制和十六进制

r=8时,表示八进制数。在八进制数中,8个数码为0,1,…,7。逢八进一,其数位权值为8i。当r=16时,表示十六进制数。在十六进制数中,分别用A表示(10),用B表示(11),用C表示(12),用D表示(13),用E表示(14),用F表示(15)。所以, 16个数码为0,1,2,…,8,9,A,B,C,D,E,F。逢十六进一,其数位权值为16i

示例16 (365.2)=3×82+6×81+5×80+2×8-1=(245.25)

(F5.4)十六= F×161+5×160+4×16-1= (245.25)

1.4.2 进位制之间的相互转换

1.其他进制转换到十进制

表1.1给出了4种进位制之间转换的对应关系。

表1.1 十进制数、二进制数、八进制数和十六进制数对照表

一个用任意进制表示的数,都可用上述式1转换成十进制数。为便于计算,可采用如下方法:整数部分和小数部分分别按下述方法转换。

整数部分采用基值重复相乘法:按括号及优先级次序,计算从最高位开始,乘基值加次高位,结果再乘基值加次次高位,一直加到个位d0为止。

示例17 11110101 B =______D。

解:

小数部分采用基值重复相除法:按括号及优先级次序,计算从最低位开始,除基值加高位,结果再除基值,一直加到小数点为止,最后再除基值。

示例18 0.F62B H =______D。

解:N=0.F62B H = (((B÷16+2)÷16+6)÷16 +F)÷16=0.96159 D。

2.十进制转换到其他进制

整数部分和小数部分分别转换:整数部分采用基值重复相除法,即除基值取余数方法,一直除到商等于0时为止,将所得的余数从下到上排列起来即为所要求的进位制数(参见示例19)。小数部分采用基值重复相乘法,即乘基值取整数方法(参见示例20)。十进制小数转换成二进制小数时,有时永远无法使乘积变成0,在满足一定精度的情况下,可以取若干位数作为其近似值。

示例19 215 D =______B。

解:如图1.6(a)所示,不断除以基值2,直到商等于0时为止。将所得余数从下到上排列起来为11010111,便是该十进制数转换成二进制整数的结果,即215 D =11010111 B。

示例20 0.6875 D =______B。

解:如图1.6(b)所示,小数部分不断乘以基值2,将得到的各位整数从上到下排列起来为0.1011,便是该十进制小数转换成二进制小数的结果,即0.6875 D = 0.1011 B。

图1.6 十进制转换成二进制的转换过程示意图

3.二进制、八进制、十六进制转换

由于二进制权值2i、八进制权值8i=23i、十六进制权值16i=24i具有整指数倍数关系,即1位八进制数相当于3位二进制数,1位十六进制数相当于4位二进制数,故可按如下方法转换。

(1)二进制整数转换成八进制/十六进制整数的方法是:先将二进制整数从右向左每隔3位/4位分一组,再将每组按二进制数向十进制数转换的方法进行转换。

(2)二进制小数转换成八进制/十六进制小数的方法是:先将二进制小数从左向右每隔3位/4位分一组,最后一组若不足3位/4位,在该组后面补相应数量的0,凑成3位/4位,再将每组按二进制数向十进制数转换的方法进行转换。

示例21 10110101 B= 265 O = B5 H。

解:第1步,将10110101按3位分组为10 110 101,按4位分组为1011 0101。

第2步,分别将每组转换成八进制数、十六进制数。

示例22 0.1011 B = 0.54 O = 0.B0 H。

解:第1步,将0.1011按3位分组为0.101 100,按4位分组为0.1011 0000。

第2步,分别将每组转换成八进制数。

分别将每一位八进制数转换成3位二进制数,每一位十六进制数转换成4位二进制数便可实现八进制数、十六进制数到二进制数之间的转换。