进制的转换
进制的定义:
进制就是进位制
是人们规定的一种进位方法(百度的解释)
这里我们可以先不管这些
我们要说是进制之间的转换
可以分为两个大类
1.十进制的数转换成x进制(x可以为任何数)
2.x进制转换成十进制(x同上)
那就先说怎么把十进制转换成x进制
例如:
我们要把十进制的12转换成二进制
那么我们该如何去转换呢
这里就有一个转换的方法
1.以十进制的数作为被除数 ,然后除以要转换成的进制数(x),得到商和余数
2.将上次计算得到的商作为新的被除数除以进制数,得到商和余数
3.一直循环执行第二步,循环到商为0时
4.当商为0时,将得到的余数从下往上倒序排列,就是我们的结果
被除数 | 除数 | 商 | 余数 |
12 | 2 | 6 | 0 |
6 | 2 | 3 | 0 |
3 | 2 | 1 | 1 |
1 | 2 | 0 | 1 |
注意:当商为0时就不需要去除了
我们把余数从下往上写就是我们的结果了 1100B(二进制)
PS:这里的x可以为任何进制,如二进制,十六进制
上面我们说了可以把十进制转换成任何进制
这里我们要做的就是把任何进制转换成十进制
上面我们用的是除法,这里我们要用到的就是除法
首先
1.把要转换成十进制的数拆分(把每一位拆开)
如:123拆分后就是1 2 3
2.然后用每个数乘以进制数的幂,
幂的取值是由每个数的位数来决定的
关于位数:假如一个数1234 4就是他的第一位,3就是第二位,2就是第三位,1就是第四位...以此类推
我们乘以的幂就是这个数的位数-1
3.把每个位数相乘后的积相加就是结果来了
把110111B转成十进制
1 | 1 | 0 | 1 | 1 | 1 |
1*(2)5 | 1*(2)4 | 0*(2)3 | 1*(2)2 | 1*(2)1 | 1*(2)0 |
32 | 16 | 0 | 4 | 2 | 1 |
55 |
我们的结果就是55(十进制)
这里应该要注意几点:
1.括号里为什么是2?
这是因为我们转换前的数是二进制的所以括号里就是2
倘若换成其它进制括号里的数也要跟着进制数所变化
2.右上角的小数什么意思?
这代表的是幂的意思,
25表示的是5个2相乘 2×2×2×2×2
而不是2×5
不过话说回来,这个进制和我们学Java好像没什么关系呀!