大家或多或少都听说过如何把一个十进制数转换为二进制数。但是如果我给你一个数字,让你口算转换为二进制数,你肯定会觉得我这是在为难你胖虎。
例如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进制数:
- 每三位一组进行分组: 101 110 101 010 110 101。
- 把每一组根据背诵的转换关系转换为八进制数: 5 6 5 2 6 5
- 把每一组数字中间的空格去掉: 565265
把这个过程倒过来,就是八进制转二进制的过程:
- 把八进制数352737每一位拆分开: 3 5 2 7 3 7
- 把每一位转换为3位二进制数,不足3位的高位补0: 011 101 010 111 011 111
- 去掉中间的空格: 011101010111011111
- 最左边如果是0开头,把0去掉: 11101010111011111
二进制与十六进制的互相转换
现在,给你一个二进制数: 101110101010110101,如何把它转成十六进制?
方法:从右向左,每4位一组把二进制数分开,再把每一组转成十六进制数:
- 每四位一组进行分组: 10 1110 1010 1011 0101。
- 把每一组根据背诵的转换关系转换为十六进制数: 2 e a b 5
- 把每一组数字中间的空格去掉: 2eab5
把这个过程倒过来,就是十六进制转二进制的过程:
- 把十六进制数1d5df每一位拆分开: 1 d 5 d f
- 把每一位转换为4位二进制数,不足4位的高位补0: 0001 1101 0101 1101 1111
- 去掉中间的空格: 00011101010111011111
- 最左边如果是0开头,把0去掉: 11101010111011111
好了,拿去考试或者装逼吧。
