进制介绍
进制也就是进位计数制,是人为定义的带进位的计数方法(有不带进位的计数方法,比如原始的结绳计数法,唱票时常用的“正”字计数法,以及类似的tally mark计数)。对于任何一种进制—X进制,就表示每一位置上的数运算时都是逢X进一位。十进制是逢十进一,十六进制是逢十六进一,二进制就是逢二进一,以此类推,x进制就是逢x进位。
每一种进制的数字运算是按照当位的数字乘以进制底数的对应次方再相加得到的最终结果。
比如:
十进制的123就是
3 * 10^0 + 2 * 10^1 + 1 * 10^2
二进制的101就是
1 * 2^0 + 0 * 2^1 + 1 * 2^2
,就是十进制的516进制需要16个字符来代表,除了0-9以外,a-f分别代表10-15
十六进制的 1b5就是
5 * 16^0 + 11 * 16^1 + 1 * 16^2
,就是十进制的437
短除法
就是把每一位(这里指的每一位是指个位十位之类的)除以要转换的进制的余数在乘以当前进制的值加到下一位去,当前位的值就为商,然后这样一直进行到最后一位(也就是个位)个位在对所须转换的进制在取模,那么这个模就是转换后的结果。多次重复,直到最后一位为0,从后往前看就是答案。
JS中的进制
|
|
parseInt
|
|
Number.toString(radix)
|
|
一道很有意思的题
|
|
第一次循环,传给parseInt(1,0),把1按0进制转换,0默认表示10进制,然后输出1。
第二次循环,传给parseInt(2,1),把2按1进制转换,引擎懵逼了,1进制中根本不可能出现2这个数字好吗?我咋给你解析,无法解析,给了个NaN。
第三次循环,传给parseInt(3,2),把3按2进制转换,引擎又懵逼了,啥玩意儿?2进制中根本不可能出现3这个数字好吗?我咋给你解析,无法解析,又给了个NaN。
所以,这道题的结果是
|
|
代码不是万能的,但不写代码是万万不能的
2020/08/10 Dary记