每年NOIP和CSP初赛必考题:进制转化>_<
复赛有时也需要写进制转化
深入了解进制原理和进制转化
- 深入了解进制原理
- 小数部分和整数部分的思考
- 进制转化统一方法
深入了解进制原理
对于进制的认识,我们大多数都是从一句话开始的:
几进制就是满几进一
这句话太对了,正确性很高,但是实用性不足
后来呢,我们对进制的了解到了一个式子:
设:(…………a[5]a[4]a[3]a[2]a[1])n为一个n进制数
那么用十进制可以理解为:
……………………a[5]n^4 + a[4]n^3 + a[3]n^2 + a[2]n^1 + a[1]*n^0
这就是我们打开进制大门的钥匙,但是他还不够完善,他需要再全面一点:
如果有小数部分怎么办呢?
如:(1001.011)2 这个可以用上面的式子表示吗?
不可以,所以我们要对上面的式子进行拓展:
设:(…………a[5]a[4]a[3]a[2]a[1] . a[0]a[-1]a[-2]a[-3]………………)n为一个n进制数
那么用十进制可以理解为:
……………………a[5]n^4 + a[4]n^3 + a[3]n^2 + a[2]n^1 + a[1]n^0 + a[0]n^-1 + a[-1]n-2 + a[-2]n^-3 ……………………
现在,它足够完善了,这样它就可以适用全部的实数(甚至连小数做底数的!),对于目前的我们够用了^_^
那,现在我们拿这个式子试一试(1001.011)2
12^3 + 12^0 + 12^-2 + 12^-3 = (9.375)10
而其实十进制数也可以这么表示,还是看(9.375)10:
910^0 + 310^-1 + 710^-2 + 510^-3
目前,这就是我们的万能式子了,我们接下来的研究都会在这个式子上开动
而这个式子,基本上也就是整个实数范围内所有进制转化的基本原理
整数部分和小数部分的思考
整数部分的转化,想必各位都已经轻车熟路,也就是我们经常说到的:除底数取余数法
但是你懂他的原理吗?
先举个例子:
(1000)10 转化 八进制
1000/8 =125 ………… 0
125/8= 15 ………… 5
15/8= 1 ………… 7
1/8= 0 ………… 1
得到的结果是(1750)8
好的,现在我们考虑:我们在除的时候,余数的意义和除数的意义是什么!
重点啊!!!!
首先第一步:1000/8 =125 ………… 0
我们表示为:1000=8125 + 01
到这里还没什么端倪
第二步:125/8= 15 ………… 5
我们又表示为:1000=8125 + 01= 8(815+5) + 01
注意,我们只是用815+5 来表示了125而已
第三步:15/8= 1 ………… 7
我们又表示为:1000=8125 + 01= 8(815+5) + 01 = 8(8(81+7)+5) + 01
我们也只是用81+7表示了15而已
第四步:1/8= 0 ………… 1
没什么特别的意义:8(8(8(80+1)+7)+5) + 0*1
但是,各位观众,准备好!
展开!!!
18^3 + 7 * 8^2 + 58^1 + 0*8^0
完美符合我们上面的式子!
其实在不断的除法和取余数的过程中
我们的本质就是:
把每一位数约束在8以下!
就像上面说的那样:
几进制就是满几进一
我们取得的余数,就是满足放在这一位的小于8的数!
而更大的内容,因为是除到的商,所以已经满足放在高位的条件了!!!
这就是我们用的进制转化的玄机
但是,小数呢?
不难想到,其实也是:除底数取余数法
但是,对于小数来说,他们的指数是负数,所以,底数应该看作:n^-1
而除以这个数,也就是乘以n!
那么不如换个叫法:乘底数取整数法!
先看看怎么运行的:
(0.11)10 -> 二进制
0.112 = 0.22 取0
0.222 = 0.44 取0
0.442 = 0.88 取0
0.882 = 1.76 取1
0.762 = 1.54 取1
0.542 = 1.08 取1
0.082 = 0.16 取0
0.162 = 0.32 取0
…………………………
如果我们保留六位小数的话,结果就是:(0.000111)2
其实本质上和整数部分是一样的,只不过这个是先取高位
就像:
0.222-1
(0.442^-1)2^-1
((0.882^-1)2^-1)2^-1
(((1+0.76)2^-1)2^-1)2^-1)2^-1
………………
本质上原理是一样的,多练习方法就Ok了!
进制转化通用方法
自己根据上面归纳吧
如果是两个都非10的进制转化,我建议先转成10进制
因为十进制下的加减乘除我们比较适应
Over~
0.222-1
(0.442^-1)2^-1
((0.882^-1)2^-1)2^-1
(((1+0.76)2^-1)2^-1)2^-1)2^-1
是不是少写了乘号