这个页面是一个关于进制转化的教程,about the English verson, plz visit the page in EnMGP.
请从1查到20,思考一下什么时候进位。显然,当你查到10的时候,进了一次位。这是因为你使用了十进制。进制就是数数的方式。十进制下的一位数字是0,1,2,3,4,5,6,7,8,9[1]. 然后请类比“二进制”,二进制下的一位数字是什么。显然是0和1. 那么咱们试着用二进制查一下数。[2]
十进制 | 二进制 | 十进制 | 二进制 |
---|---|---|---|
0 | 0b0 | 8 | 0b1000 |
1 | 0b1 | 9 | 0b1001 |
2 | 0b10 | 10 | 0b1010 |
3 | 0b11 | 11 | 0b1011 |
4 | 0b100 | 12 | 0b1100 |
5 | 0b101 | 13 | 0b1101 |
6 | 0b110 | 14 | 0b1110 |
7 | 0b111 | 15 | 0b1111 |
学会了上面的东西,就可以以O(n)的复杂度转换进制了很棒是不是.
但是这个效率没人会满意的,所以接下来介绍更好的进制转换方式
根据上面的定义,可以得到,一个数转化为x进制的最后一位数即为这个数除以x的余数,而倒数第二位数(如果存在的话)就是这个数除以x然后模x,以此类推,递归运算即可以O(log n)的复杂度完成转换,代码也不写了。
程序员常用的进制有十进制,二进制(0b),八进制(0o)和十六进制(0x),如果你是Windows用户,请找到电脑内置的计算器,然后自己摸索转换的方法然后选择输入的进制,输入数字,改成输出的进制,读取数字即可。