CSP初赛知识点讲解(二)
进制转换
基本定义
十进制:逢十进一(包含数字0~9)
( 365 ) 10 = 3 × 1 0 2 + 6 × 1 0 1 + 5 × 1 0 0 (365)_{10}=3\times10^2+6\times10^1+5\times10^0 (365)10=3×102+6×101+5×100
二进制:逢二进一(包含数字0~1)
( 1011 ) 2 = 1 × 2 3 + 0 × 2 2 + 1 × 2 1 + 1 × 2 0 (1011)_2=1\times2^3+0\times2^2+1\times2^1+1\times2^0 (1011)2=1×23+0×22+1×21+1×20
n进制转十进制
我们一般采用按位展开,下面以二进制转十进制为例
二进制转十进制:按位展开 ( 1011 ) 2 = 1 × 2 3 + 0 × 2 2 + 1 × 2 1 + 1 × 2 0 = 11 (1011)_2=1\times2^3+0\times2^2+1\times2^1+1\times2^0 =11 (1011)2=1×23+0×22+1×21+1×20=11
十进制转n进制
我们一般采用短除法,下面以十进制转二进制为例
十进制数13转化成二进制数
结果为:1101
n进制转m进制
直接转换有公式,但是太麻烦,统一先把m进制数转 换成十进制数,再把十进制数转换成n进制数。(和二转 十,十转二相同)
二进制转4,8,16进制可以快速转换。
如2转8,23=8,所以每3位二进制可以看做一位8进制。 反过来也是一样
11 110 101 101 从后往前分别为3,6,5,5,位数不足, 最前面补0
小数的进制转换
整数的进制转换会了,那么如果遇到小数的进制转换怎么办呢?其实也很简单。
小数二进制转十进制: 整数部分是$\times$2的…3,2,1,0次方,那么小数部分照旧,按照位数继续乘以2的-1,-2,-3…次方就可以了。 比如0.0101=$1\times2{-2}+1\times2{-4} $
小数十进制转二进制也差不多,以前是/2,现在变成2, 比如0.25转换成二进制。0.252=0.5取整数位0,0.5*2=1, 取整数位1,小数位没有了就不管了,最终的答案就是 0.01。比如0.4转换成二进制就是无限循环形式。
初赛的时候小数转换选择题其实很简单的,因为要显示出来那么肯定不能是无限循环小数。 所以对于2转10,一般都是0.1,0.11之类的,很简单,二 进制的0.2相当于就是十进制的1.0,那么0.1就是0.2的 一般,对应十进制1.0的一半就是0.5. 对于10转2,如果要是有限小数,一般都是0.125,0.25, 0.5之类的,和刚才一样0.25是1的1/4,所以答案就是 0.01。
例题训练(四)
-
【NOIP2000】下列无符号数中,最小的数是()。
A.(11011001)2 B.(75)10 C.(37)8 D.(2A)16
答案:C
题解:要比较不同进制的数的大小,可以将它们转换为十进制数进行比较。在这道题中,我们需要将每个数转换为十进制数,然后比较它们的大小。最小的数是十进制数37,对应的八进制数就是最小的。
-
【NOIP2001普及组】与二进制数101.01011等值的十六进制数为()。
A.A.B B.5.51 C. A.51 D. 5.58
答案:D
题解:要将二进制数转换为十六进制数,可以先将二进制数转换为十进制数,然后再将十进制数转换为十六进制数。101.01011的十进制等值是5.34375,转换为十六进制数就是5.58。
-
【NOIP2002普及组】(0.5)10=( )16
A.0.1 B.0.75 C.0.8 D.0.25
答案:C
题解:这是一个简单的数制转换题目。将十进制的0.5转换为十六进制数,得到的结果是0.8。
-
【NOIP2002】算式(2047)10 - (3FF)16+(2000)8的结果是()。
A.(2048)10 B.(2049)10 C.(3746)8 D.(1AF7)16
答案:A
题解:这是一个进制间的运算题目。首先将十六进制和八进制数转换为十进制数,然后进行加减法运算。最终结果为十进制数2048。
-
【NOIP2003】十进制数2003等值于二进制数()。
A.11111010011 B.10000011 C.110000111 D.010000011
E.1111010011
答案:A
题解:将十进制数2003转换为二进制数,得到的结果是11111010011。
-
【NOIP2004提高组】十进制数100.625等值于二进制数()。
A.1001100.101 B.1100100.101 C.1100100.011 D.1001100.11 E.1001100.01
答案:B
题解:将十进制数100.625转换为二进制数,得到的结果是1100100.101。