大家或多或少都听说过如何把一个十进制数转换为二进制数。但是如果我给你一个数字,让你口算转换为二进制数,你肯定会觉得我这是在为难你胖虎。
例如8769转换为二进制是多少?答案是10001001000001。如果你口算做除法,可能根本记不住这么多位。
那么今天告诉你一个技能,如何口算实现:
八进制<->二进制<->十六进制
的转换。例如:
二进制 | 八进制 | 十六进制 |
101110101010110101 | 565265 | 2eab5 |
11101010111011111 | 352737 | 1d5df |
这三个进制之间的转换,初看起来毫无规律,如何口算?为了实现口算,你需要记住16个对应关系:
二进制 | 八进制 | 十六进制 |
0 | 0 | 0 |
1 | 1 | 1 |
10 | 2 | 2 |
11 | 3 | 3 |
100 | 4 | 4 |
101 | 5 | 5 |
110 | 6 | 6 |
111 | 7 | 7 |
1000 | 10 | 8 |
1001 | 11 | 9 |
1010 | 12 | a |
1011 | 13 | b |
1100 | 14 | c |
1101 | 15 | d |
1110 | 16 | e |
1111 | 17 | f |
这16个组合非常好记,你搬着手指也能数出来。
二进制与八进制的互相转换
现在,给你一个二进制数: 101110101010110101
,如何把它转成八进制?
方法:从右向左,每3位一组把二进制数分开,再把每一组转成8进制数:
- 每三位一组进行分组:
101110101010110101
。 - 把每一组根据背诵的转换关系转换为八进制数:
565265
- 把每一组数字中间的空格去掉:
565265
把这个过程倒过来,就是八进制转二进制的过程:
- 把八进制数352737每一位拆分开:
352737
- 把每一位转换为3位二进制数,不足3位的高位补0:
011101010111011111
- 去掉中间的空格:
011101010111011111
- 最左边如果是0开头,把0去掉:
11101010111011111
二进制与十六进制的互相转换
现在,给你一个二进制数: 101110101010110101
,如何把它转成十六进制?
方法:从右向左,每4位一组把二进制数分开,再把每一组转成十六进制数:
- 每四位一组进行分组:
101110101010110101
。 - 把每一组根据背诵的转换关系转换为十六进制数:
2e a b5
- 把每一组数字中间的空格去掉:
2eab5
把这个过程倒过来,就是转二进制的过程:
- 把1d5df每一位拆分开:
1d5d f
- 把每一位转换为4位二进制数,不足4位的高位补0:
00011101010111011111
- 去掉中间的空格:
00011101010111011111
- 最左边如果是0开头,把0去掉:
11101010111011111
好了,拿去考试或者装逼吧。