查看原文
其他

一日一技:装逼技能,口算二进制转八进制和十六进制

kingname 未闻Code 2022-09-11

大家或多或少都听说过如何把一个十进制数转换为二进制数。但是如果我给你一个数字,让你口算转换为二进制数,你肯定会觉得我这是在为难你胖虎。

例如8769转换为二进制是多少?答案是10001001000001。如果你口算做除法,可能根本记不住这么多位。

那么今天告诉你一个技能,如何口算实现:

八进制<->二进制<->十六进制的转换。例如:

二进制八进制十六进制
1011101010101101015652652eab5
111010101110111113527371d5df

这三个进制之间的转换,初看起来毫无规律,如何口算?为了实现口算,你需要记住16个对应关系:

二进制八进制十六进制
000
111
1022
1133
10044
10155
11066
11177
1000108
1001119
101012a
101113b
110014c
110115d
111016e
111117f

这16个组合非常好记,你搬着手指也能数出来。

二进制与八进制的互相转换

现在,给你一个二进制数: 101110101010110101,如何把它转成八进制?

方法:从右向左,每3位一组把二进制数分开,再把每一组转成8进制数:

  1. 每三位一组进行分组: 101110101010110101

  2. 把每一组根据背诵的转换关系转换为八进制数: 565265

  3. 把每一组数字中间的空格去掉: 565265

把这个过程倒过来,就是八进制转二进制的过程:

  1. 把八进制数352737每一位拆分开: 352737

  2. 把每一位转换为3位二进制数,不足3位的高位补0: 011101010111011111

  3. 去掉中间的空格: 011101010111011111

  4. 最左边如果是0开头,把0去掉: 11101010111011111

二进制与十六进制的互相转换

现在,给你一个二进制数: 101110101010110101,如何把它转成十六进制?

方法:从右向左,每4位一组把二进制数分开,再把每一组转成十六进制数:

  1. 每四位一组进行分组: 101110101010110101

  2. 把每一组根据背诵的转换关系转换为十六进制数: 2e a b5

  3. 把每一组数字中间的空格去掉: 2eab5

把这个过程倒过来,就是转二进制的过程:

  1. 把1d5df每一位拆分开: 1d5d f

  2. 把每一位转换为4位二进制数,不足4位的高位补0: 00011101010111011111

  3. 去掉中间的空格: 00011101010111011111

  4. 最左边如果是0开头,把0去掉: 11101010111011111

好了,拿去考试或者装逼吧。


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存