NOIP普及组-快速十to二进制转换

快速进制转换,引领分数,成就AK

Posted by 周琪岳 on July 9, 2021

平抛运动中,速度决定位移。OI中,口算决定分数

将十进制数用短除法的方式转换成二进制虽然可行,但是在计算量较大的时候不免显得太慢。所以,可以利用2的k次幂的规律快速口算二进制数。

观察表格找规律

k 2的k次方 二进制下的2的k次方
0 1 1
1 2 10
2 4 100
3 8 1000
4 16 10000

可知2^k在二进制下,通俗的来讲就是1后面加k个0

相信不少小伙伴已经看出来,只要利用2^k的这种规律,就可以口算出所有数字的二进制形式了。

举个例子:

14这个数字可以表示为8+4+2,也就是2^3 + 2^2 + 2^1,根据二进制加法,可以直接写出答案:1000 + 100 + 10 = 1110,比短除法高效多了。当然,也可以利用16这个2的次方数,14 = 16 - 2 = 2^4 - 2^1,直接利用二进制减法,10000 - 10 = 1110。

当然,利用2的k次方-1的规律也可以提升口算速度

k 2的k次方-1 二进制下的2的k次方
1 1 1
2 3 11
3 7 111
4 15 1111
5 31 11111

14也可以变成15-1来快速口算,过程就不再赘述了。

下面给大家准备了一个常用十进制转二进制的表格:

十进制 二进制
1 1
2 10
3 11
4 100
5 101
6 110
7 111
8 1000
9 1001
十进制 二进制
10 1010
11 1011
12 1100
13 1101
14 1110
15 1111
16 10000
17 10001
18 10010
十进制 二进制
19 10011
20 10100
21 10101
22 10110
23 10111
24 11000
25 11001
26 11010
27 11011
十进制 二进制
28 11100
29 11101
30 11110
31 11111
32 100000

这个表背下来,应对普及组初赛的二进制转换应该就很容易了。

CSP-J2021rp++!!!