NOIP之路

【NOIP初赛篇2】基础知识(一)进制的转化

2017-09-13  本文已影响119人  沧海无雨

 一、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

上一篇 下一篇

猜你喜欢

热点阅读