序言
提到进制转换,我们就要想到逢几进一,比如二进制是逢二进一,八进制是逢八进一,十进制是逢十进一,十六进制是逢十六进一,记住这个,非常有助于你理解和转换。另外,所有进制往十进制的转换就是用位权法,而十进制往其它进制的转换都是用短除法。
二进制与十进制转换
二进制中的数有:0、1
二进制与十进制数的对应关系,如图
二进制 | 十进制 |
---|---|
0 | 0 |
1 | 1 |
10 | 2 |
11 | 3 |
100 | 4 |
101 | 5 |
110 | 6 |
111 | 7 |
1000 | 8 |
1001 | 9 |
- 二进制转十进制
- 位权法: 就是将要转换的二进制从右往左,依次用当前位置的数乘当前进制的幂次方,并将结果相加,得到的和即十进制结果
二进制 | 计算方法 | 十进制 |
---|---|---|
1011 | 1*2^3+1*2^1+1*2^0 | 11 |
101 | 1*2^2+1*2^0 | 5 |
为了让这个计算方法更直观,可以观察下面这个图中的计算方法:
-
十进制转二进制
- 短除法:就是将要转换的十进制除以2,得到商和余数,得到的商如果不为0,则继续除以2,直到商为0,此时,将余数从以往上读出来,就是要转换的二进制,如以示例
十进制 计算方法 二进制 5 101 11 1011
八进制与十进制转换
八进制中的数有:0、1、2、3、4、5、6、7
八进制与十进制数的对应关系,如图
八进制 | 十进制 |
---|---|
0 | 0 |
1 | 1 |
2 | 2 |
3 | 3 |
4 | 4 |
5 | 5 |
6 | 6 |
7 | 7 |
10 | 8 |
11 | 9 |
- 八进制转十进制
- 位权法
八进制 | 计算方法 | 十进制 |
---|---|---|
1012 | 1*8^3+1*8^1+2*8^0 | 522 |
102 | 1*8^2+2*8^0 | 66 |
这里也通过一张图,让这个计算更加的直观
- 十进制转八进制
- 短除法
十进制 | 计算方法 | 八进制 |
---|---|---|
522 | ![]() | 1012 |
66 | ![]() | 102 |
十六进制与十进制转换
十六进制中的数有:0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F
十六进制与十进制数的对应关系,如图
十六进制 | 十进制 |
---|---|
0 | 0 |
1 | 1 |
2 | 2 |
3 | 3 |
4 | 4 |
5 | 5 |
6 | 6 |
7 | 7 |
8 | 8 |
9 | 9 |
A | 10 |
B | 11 |
C | 12 |
D | 13 |
E | 14 |
F | 15 |
- 十六进制转十进制
位权法:
十六进制 | 计算方法 | 十进制 |
---|---|---|
102A | 1*16^3+2*16^1+A*16^0 | 4138 |
10A | 1*16^2+A*8^0 | 266 |
通过一张图,让位权法更直观
- 十进制转十六进制
十进制 | 计算方法 | 十六进制 |
---|---|---|
4138 | ![]() | 102A |
266 | ![]() | 10A |
到这里,你已经学会了所有进制之间的转换了,如果你想要二进制转八进制,或者二进制转十六进制怎么办呢?对,没错,就是你想到的,先转成十进制,然后再转成目标进制,但是这里有一个小技巧,如果是二进制转八进制,则将二进制的数,从右往左,每三个为一组,转换成十进制,最后将每组拼接起来就是八进制数据了;如果是二进制转十六进制,则将二进制的数,从右往左,每四个为一组,转成十进制,最后将每组拼接起来就是十六进制的数据了。
简单吧,我们来试着做一下:
- 将二进制10110转成八进制
- 先将二进制数据分组:10 110,不足三位怎么办?可以补0,得到 010 110,也可以不用管
- 110 使用位权法转成十进制,得到结果为:6
- 10 使用位权法转成十进制,得到结果为:2
- 最后,拼接起来,得到结果为:26
- 所以,10110(2) = 26(8)
- 将二进制101101转成十六进制
- 先将二进制数据分级:10 1101,不足四位怎么办,可以补0得到 0010 1101,也可以不用管
- 1101 使用位权法转成十进制,得到结果为 13,根据十进制与十六进制的对应关系可知,对应的十六进制数为 D
- 0010 使用位权法转成十进制,得到的结果为 2
- 最后,拼接起来,得到结果为:2D
- 所以,101101(2)=2D(16)
好了,到这里,咱们的整个进制转换全部学完了,如果你身边啊正好有一个单片机,正好呢还配了一个LCD1602的显示屏,你就可以用咱们刚刚学到的进制转换来操控这块屏幕了。这里有篇关于阅读LCD1602数据手册的文章,里面提到的写指令,写数据就是用二进制转十六进制完成的,点这里 用STC89C52点亮你的LCD1602A显示屏 查看文章。