平抛运动中,速度决定位移。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++!!!