什么是进制?
参考百度百科的说法:进制也就是进位计数制,是人为定义的带进位的计数方法.对于任何一种进制---X进制,就表示每一位上的数运算时都是逢X进一位。 十进制是逢十进一,十六进制是逢十六进一,二进制就是逢二进一,以此类推,x进制就是逢x进位。
通俗说就是 一种人为规定的进位方法,这里需要强调一下,因为进位了, 比如2进制逢2进1,8进制逢8进1等等,所以:
二进制数里没有2 比如 1001 , 错误示例: 12
8进制数里没有8 , 比如 249, 错误示例: 18
10进制里也没有十 ,(注意:这里指的 没有 是指没有单个位数的一个数, 我们常见的10 实际上因为到了9以后逢10,然后进了一位,从一位数的9 变成了 1 0 两位数,并没有单独表示10的这么一个数)
16进制
根据上文中的说法, 16进制应该没有16, 但是阿拉伯数组只有10个(即0-9),那该怎么办呢?
对于9以后的数,我们用字母表示, 比如: 在16进制中, 我们单个位数上的数字有 1,2,3,4,5,6,7,8,9,(重点来了),在9以后,我们用 a表示10, b,表示11,c表示12...最后到f代表15,因为是16进制没有16嘛,所以到f就结束
进制转换
将n进制转换为10进制
2进制转10进制
由于常见的是2进制,所以下面我们拿2进制举例,道理都是一样的
首先看一个二进制数, 比如 101
方法:也就是说,将二进制数转换为十进制数,就是将每个位数的数(只有1或者0)乘2的n次方(这个n就是由从右边数的第n位,注意右边第一位从0开始)
n进制转换为10进制
方法与2进制也基本相同,只是将上述的2次方换为n即可例如, 16进制的 10 就等于十进制的 0*(16^0) + 1*(16^1) = 16
10进制转n进制
方法:
- 将要转换的数逐渐除以n(2进制就是n就是2),余数保留,直到最后的商等于0为止
- 最后将得到的余数逆序摆出得到的数就是对应的二进制数
例如十进制的302: ( "/"代表除以的意思)
302/2 = 151 余0
151/2 = 75 余1
75/2 = 37 余1
37/2 = 18 余1
18/2 = 9 余0
9/2 = 4 余1
4/2 = 2 余0
2/2 = 1 余0
1/2=0 余1
得到的余数依次是0 1 1 1 0 1 0 0 1,将其逆序摆出得到的数为100101110,就是302的二进制数
将2进制转换为8进制(m进制转换为n进制)
我们可以先将2进制其转换为我们熟悉的10进制,将10进制再转换为8进制即可,这里不在赘述