从这篇文章你将了解到什么?
二进制转十进制的心算
二进制 十进制 之间的转换
本系列文章的文末都会放上一个“速记卡”,这是为了方便以后回来快速查找并预览相关知识。
1 二进制转十进制有什么用
如果你是网管或者网络工程师,那么你就会接触到IP地址的运算。比如下面这种场景,就要用到二进制相关知识:
如果你是程序员, 掌握了二进制,就可以优化自己写的代码,还可以理解别人的源码。
写算法的时候如果可以很快口算出一串由很多1和0组成的二进制串代表的含义, 那么将有助于我们找到很多问题的规律。
这就像印度数学天才拉马努金,他看一些复杂的算术符号就像我们看简单的加减法一样,平常人要计算很多步才能得到解的数学题,他看一眼就可以得出答案。 所以他一生留下了3900多个公式,却大部分懒得写公式证明,让后世数学家绞尽脑汁。
2 二进制转十进制
先来看看二进制和十进制的对照表
十进制54321二进制10110011101
那么在平常的时候怎么快速地心算,把简单的二进制转成十进制呢?
二进制101的十进制是多少呢?
每到这种时候,我们就可以先拿十进制出来做类比。十进制的101可以拆解成下面这样:
二进制的101也可以用同样的方式拆解:
把上面的公式做成下面的表格:
从表格上发现,其实我们只要把表格最后一行【按位计算的结果】做加法运算,就可以求出二进制101的十进制。
也就是说,我们只要把2的0次方一直到2次2方计算出来,记录在表格上,就可以用加法快速计算出二进制转十进制的结果。
我们姑且把上面的方法称为二进制转十进制的表格算法。
2.1 二进制转十进制-表格算法
下面来实验下我们推导出的表格算法。
11001的十进制是多少呢?
第一步,首先画一个表格, 填上上面的二进制数字
第二步, 对着2的n次方参照表,填上从右边开始依次填上2的0次方到2的4次方, 也即是1,2,4,8
2的n次方参照表:
第三步,算出结果 16 + 8 + 1 = 25
也就是二进制11001的十进制就是25,是不是很神奇呢?
我们熟悉了这个过程之后,把2的n次方记在心里,就可以快速心算了。比如二进制11101 就是 16+8+4+0+1, 即十进制的29。
比如二进制10000 就是 16+0+0+0+0 , 即十进制的16。
3 十进制转二进制
那么10进制又是怎么转二进制呢?
十进制13的二进制是多少?
3.1 十进制转二进制除二法
如图,我们从下到上读取余数得到1101,所以十进制13的二进制就是1101。
这种方法不利于心算,只有遇到非常大的数字时可以使用。
3.2 十进制转二进制表格法
首先还是画一个表格,写上1,2,4,8
从右往左开始比较,找出第一个比13小的最大数字,也就是8,标记为1
13-8=5, 接下来找出比5小的最大数字,也就是4,也标记为1。
5-4=1, 最后把数字1也标记为1,其余数字全部标记为0
于是得到十进制13的二进制就是1101。
3.3 十进制转二进制的计算技巧
有时候十进制转二进制还是有些技巧的,比如下面这道题:
十进制15的二进制是?
我们很容易就记起来,十进制16的二进制就是10000,那么十进制16-1=15,二进制10000-1 = 01111。很快就可以得到十进制15的二进制就是1111。