【NOIP初赛篇2】基础知识(一)进制的转化
一、N进制
进制,我们日常生活中接触得非常多,譬如时间,一天是24小时,从0点开始算起,到23点,每逢24点,就重新归为0点。这种周而复始的周期性的轮回,我们可以理解为进制,即逢X进下一位,上面的例子中,就是逢24进1,因此是24进制。同样的,1小时有60分钟,对于分钟来说,则是逢60进1,因此是六十进制。当然我们生活中用的最多,也最熟练的是十进制,计算机使用的是二进制。
1、十进制
十进制在数学领域和生活中应用最为广泛,也最容易被人们所理解和运算。譬如132,即百位数为1,十位数是3,个位数是2。那么132的计算是这样进行的:百位数1×100+十位数×3+个位数×1,即 132 = 1×10^2+3×10^1+2×10^0 (我们用“^”表示幂,后面的数为幂的指数,10^2即为10的平方)。按照上面的规则,我们可以将十进制进行归纳和总结。
假定一个n位数的十进制数P,它的各位数,从高到底(如从亿位到个位)分别是A1,A2,A3...An-1,An , 那么我们可以这样计算或表示它:
P = A1*10^(n-1)+A2*10(n-2)+A3*10^(n-3)+...Ai*10(n-i)+... An-1*10^1+An*10^0
2、二进制、八进制、十六进制、N进制
我们在生活中,用得最普遍的是十进制,但是众所周知,计算机使用的却是二进制,这是因为二进制更容易表示和实现,当然计算机使用什么进制完全是人类的设计,如果有一天有一些工程师,非要将计算机弄成三进制,其实也没有问题,据说前苏联的计算机研发就是基于三进制的,果然是战斗民族,与众不同。
但是不管是什么进制,它的原理都是一样的,我们参照上面十进制的计算方式,可以很容易的得出其他进制的计算方法,这个方法,实际上也是由其他进制转化成十进制的方法。
假定一个n位数的二进制数P,它的各位数,从高到底(如从亿位到个位)分别是A1,A2,A3...An-1,An , 那么我们可以这样计算或表示它:
P = A1*2^(n-1)+A2*2(n-2)+A3*2^(n-3)+...Ai*2(n-i)+... An-1*2^1+An*2^0
假定一个n位数的八进制数P,它的各位数,从高到底(如从亿位到个位)分别是A1,A2,A3...An-1,An , 那么我们可以这样计算或表示它:
P = A1*8^(n-1)+A2*8(n-2)+A3*8^(n-3)+...Ai*8(n-i)+... An-1*8^1+An*8^0
如果我们再将上面的方法进行归纳,我们就可以得出,对于一个R进制的数,如果我们要把它转化成十进制,可以这样计算:
假定一个n位数的R进制数P,它的各位数,从高到底(如从亿位到个位)分别是A1,A2,A3...An-1,An , 那么我们可以这样计算或表示它:
P = A1*R^(n-1)+A2*R(n-2)+A3*R^(n-3)+...Ai*R(n-i)+... An-1*R^1+An*R^0
为了大家更好的理解,我们举例来说明一下。
567(8) = 5×8^2+6×8^1+7×8^0 = 375
15(16) = 1×16^1+5×16^0 = 21
1010 (2) = 1×2^3+0×2^2+1×2^1+0×2^0 = 10
需要特别指出的是,在十六进制中,因为它的范围是0~15,但是我们的数字中只有0~9,那么剩下的10~15,我们不能用数字来表示,因此我们一般用A~F来表示,它们分别代表了10~15。
如: 2D (16) = 2×16^1+13×16^0 = 45
二、进制的转化
1、R进制转十进制
R进制转十进制的问题,上面已经具体介绍了,唯一需要介绍的是,如果R进制有小数部分该如何计算呢?其实很简单,我们观察一下。
132.21(10) = 1×10^2+3×10^1+2×10^0+2×10^(-1)+1×10^(-2)
其实,小数部分,就是指数为负即可。举例说明
110.11(2) = 1×2^2+1×2^1+0×2^0+1×2^(-1)+1×2^(-2) = 6.75
2、十进制转R进制
2.1 整数部分
43(10)= 101011 (2)
整数十进制转二进制具体做法就是:不断除以2,剩下的商继续往下除,留下的余数,倒序排列即可。如果是转成R进制,就是不断的除R,其他参照上面。
2.2 小数部分
0.375(10)= 0.011(2)
小数十进制转二进制具体做法是:将小数部分不断乘以2,取整数部分,并且每次只遗留小数部分继续相乘,直到小数部分为0才结束。当然,有一些数,是永远都无法计算为0,因此小数部分无法保证其精准,但是相乘的次数越多,精度就越高,也就是越逼近真实值。如果是R进制,那么此处应当是乘以R,其他和上面做法一样。
四、练习
历年题目
1、【2010提高】与16进制数A1.2等值的10进制数是()
A.101.2 B.111.4
C.161.125 D.177.25
2、【2010普及】2E+03表示 ()
A.2.03 B.5 C.8 D.2000
3、【2009提高】在字长为16位的系统环境下,一个16位带符号整数的二进制补码为1111111111101101。其对应的十进制整数应该是( )
A.19 B.-19 C.18 D.-18
4、【2009普及】十进制小数125.125对应的八进制数是( )
A.100.1 B.175.175 C.175.1 D.100.175
5、【2008提高】与十进制数28.5625相等的四进制数是( )
A.123.21 B.131.22 C.130.22 D.130.21 E.130.20
6、(2008)10+(5B)16的结果是( )。 (不定项选择)
A.(833)16 B.(2099)10 C.(4063)8 D.(100001100011)2
7、【2007模拟】算式(1000)10-(100)16-(10)8的结果是( )。(不定项选择)
A.(890)10 B. (986)8 C. (1011100000)2 D. (2E0)16 E. (736)10
8、【2007提高】与十进制数17.5625相对应的8进制数是( )
A. 21.5625 B. 21.44 C. 21.73 D. 21.731 E.前4个答案都不对
9、(2070)16+(34)8的结果是( ). (不定项选择)
A. (8332)10 B. (208C)16 C. (100000000110)2 D. (20214)8
题解:统一为二进制运算,然后再转其他进制
10、【2007普及】与十进制数1770对应的八进制数是( )。
A.3350 B.3351 C.3352 D.3540
11、【2006提高】与十进制数1770.625对应的八进制数是()。
A. 3352.5 B. 3350.5 C. 3352.1161 D. 3350.1151 E.前4个答案都不对
12、(2010)16 + (32)8的结果是()。(不定项选择)
A. (8234)10 B. (202A)16 C. (100000000110)2 D. (2042)16
答案:
1~5 C、D、B、C、D
6~10 ABC、CDE、B、ABD、C
11~12 A 、AB