奇妙的二进制

大龙宝
创建于09-18
阅读 362
收藏TA

需扫码在手机上打开
文章后点击更新提醒

     以下是一组奇妙的数字表格,我只需要通过问你6个问题,我就能准确知道你的年纪。什么!你不相信?那么我们就来试一试!

     请看一下6张表格,然后告诉我哪几张图表里有包含你的年龄。我能在很短的时间里算出你的年龄。

 啥?你觉得我是靠记住每一张图上的数字,然后报答案的?NO,NO,NO这里其实是使用了一些特殊的运算方法,现在马上为大家解密:

这个表格是我在一本书上面看到的,它的算法就是哪一张表上有自己的年龄,我们就把表里的第一个数字记下来,然后把记录下来的数字相加就能得的正确的年龄。例如:第一张、第四张、第五张表格里有自己的年龄。那么我们根据这个算法可以算得1+8+16=25岁。当时的我觉得真的是帅呆了,酷毙了。

 我在想为什么会从这些数字上就可以猜出这些人的年龄呢?这是什么原理呢?我就涂啊改啊画,一直想不通。但是呢我又不服输。我想通过自己计算出来并不想从书中去寻找答案,我觉得我如果能从生活中探索出来,那会比我在书中看到答案更加精彩。

在这六张卡牌中,到底有什么规律可寻呢?直到我最近在课外编程课上学习到了二进制同十进制的转化让我找到了一点灵感。二进制数是如何转换为十进制数呢?可以通过位权展开法。对于一个二进制数,把每一位上的数字乘以 2 的相应次方,然后将结果相加。例如二进制数 1101,转换为十进制数的过程为:1×2³+ 1×2²+ 0×2¹+ 1×2⁰ = 8 + 4 + 0 + 1 = 13。

我通过观察2³=8,2²=4,2¹=2,2⁰=1。这几个数字不刚好就是表1到表4的上第一个数字吗?我们把第六张图到第一张图依次排列,如果这个数字在这张表格里记上1,没有在这个表格里记上0。那么回到我们前面讲的例题:第一张、第四张、第五张表格里有自己的年龄。这我们可以记录为011001,那么转化为十进制数0×25+1×24+1×2³+ 0×2²+ 0×2¹+ 1×2⁰ = 0+16+8+0+0+1= 25。

  哈哈,原来这六张图片是用二进制来解密的。

1.什么是二进制

那么,什么是二进制呢?我们平时在数学课上学到的知识里所用到的数字都是由0~9这10个数字组成满十进一,而二进制就只有0和1两个数字组成满二就要进一。例如:在十进制中1+1=2,而二进制中1+1已经满2了,所有要进位结果等于10。

现我们知道了二进制的定义,那么它和十进制有什么联系呢?二进制和十进制能够相互转换吗?答案是当然可以。

将十进制转换为二进制的方法是通过连续除以2来得到二进制数。从右到左,每次将余数记录下来,直到商为0为止。这些余数就是二进制数的各个位。

例如:将十进制的25转换为二进制的过程如下:

25÷2=12……1

12÷2=6……0

6÷2=3……0

3÷2=1……1

1÷2=0……1

我们再按从下往上将这些余数依次排列得11001

因此,25的二进制表示是11001。

而将二进制转换为十进制的方法是将每一位乘以2的幂,从右到左进行计算。以上我们算的25的二进制表示为例子:

1X24+1X23+0X22+0X21+1X20

=1X16+1X8+0X4+0X2+1X1

=16+8+1

=25

学会了二进制和十进制之间的换算,我们回过头看看之前的6张表格来对这个小游戏进行揭秘:它们其实是根据二进制的规律进行排列的,第一张表包含了从十进制换算成二进制后右边第一位是1的数字,第二张表包含了从十进制换算成二进制后右边第2位是1的数字,以此类推……

如果有人和我说第4张,第3张,第1张表格里有他的年龄,就可以得出二进制数1101,转化为十进制数就是:1X23+1X22+0X21+1X20=8+4+0+1=13。

2. 二进制数的四则运算包括加法、减法、乘法和除法。

1. 加法:从低位到高位依次运算,“满二进一”,同一数位上只有四种情况:0+0=0,0+1=1,1+0=1,1+1=10。

比如101+11=1000,5+3=8

2. 减法:先把数位对齐,同一数位不够减时,从高一位借位,“借一当二”。

比如101-11=10,5-3=2

3. 乘法:乘法口诀为:零零得零,一零得零,一一得一。

比如101*11=1111,5*3=15

4. 除法:每一位商数非0则1。

比如101/11=1……10,5/3=1……2

二进制的四则运算类似于十进制的四则运算,同样有各种运算律,如加法的交换律和结合律,乘法的交换律和结合律以及乘法对加法的分配律。


3.二进制的实际应用

难道二进制难道就只能被用来玩玩游戏没有其他的用途了吗?带着这个问题我去问了爸爸:“还可以利用此性质解决什么问题呢?”

这时爸爸给我提出了一个问题:“100杯水,其中有一杯有毒,现只有七只老鼠,老鼠在喝了毒水后会在24小时后死亡,请在24小时内找出有毒的那一杯水。”

我看到这个题目时,我第一个想到就是二分法,从50开始一直分成两份;依次是:50、25、13、7、4、2、1. 虽然只数符合了,但是时间超标了,要168个小时。这个方案被pass了。

我想到的第二个方法是暴力枚举,直接让99只老鼠试99杯,这次的时间对了,但是,只数又超标了,第二个方案也被pass了。

我想起了二进制,想着要不先试试看。

于是,我把每一个水杯都编上号,再把每一个编号都转换为二进制,如下图:

接着把老鼠编上1到7,把从左往右第n位给n号老鼠喝。最终把死了的老鼠标为1,否则标为0。最终会得到一个二进制数,把这个二进制数转换成十进制数,所得的数就是水杯的编号。假如死掉的是编号为1、3、7三只老鼠那么二进制数就是1010001,也就是整数81,也就是毒水是编号为81的水杯里装的。

除了以上这题,二进制还有其他什么妙用呢?我们来看下面一题:

在一个市场里面要造一套公平公正的砝码,要做到以下操作:要能称出1克到2047克的所有重量,并且整套砝码数量越少越好。

 

刚看到这道题目,我们该怎么做呢?

 

首先第一步看到2047这个数字就让我想起了2048这个2的11次的数。那我们是不是能用二进制来解决这个问题呢?

 

试想一下:

要能称出1-2047克的不同的克重 1克的砝码是必不可少的。所以我们首先要选择一个1克的砝码。称出2克的重量我们可以选择再加一个1克的砝码或者直接选择2克的砝码。很显然,选择2克的砝码更有优势,它可以加直接称出2克的重量外还可以同1克的砝码组合称出3克。

 

我们再来看4这个重量在怎么样称出呢?增加1克,2克,3克,4克这4种不同的砝码都可以得到我们想要的重量。但是怎么选择才是最合理的呢?

我们来看看这几个数字的二进制怎么表示:

1在二进制中表示为 1

 

2在二进制中表示为 10

 

3在二进制中表示为 11

 

4在二进制中表示为100

很显然用二进制数1,10,100可以组成1,10,11,100,101,111。即十进制数1,2,3,4,5,6,7这5个数组。

由此我们可以想到十进制2047化为二进制等于11111111111,我们用二进制数1,10,100,1000,10000,100000,1000000,10000000,100000000,1000000000,10000000000这11个二进制数可以组成11111111111以内的任何数。对这11个二进制数字转换可得1,2,4,8,16,32,64,128,256,512,1024这11个数字。即用造11个克重的砝码就可以称出2047克以内的任意整数克重。

 

这种方法还可以运用在造尽可能少的尺子来测量长度等不同的问题。

 

虽然二进制只有0和1两个数字,但是它每时每刻都在我们周围。我国古代阴阳学中“八卦”,其实也可以代表一个0-7的“二进制”数字,此刻我们写论文用的电脑,还有各种二维码也是用黑白两个不用颜色的点分别表示0和1,还有还有著名的摩斯密码也是一种时断时续的二进制信号代码,甚至于有一种提花织布机也是根据二进制的原理,电影《孤注一掷》中程序员就用手势6来提醒朋友报警……二进制无处不在。

 

二进制的运算规则简单,研究好二进制,掌握好二进制,我们可以更好地为我们的科技带来发展,实现科技兴国!

 

07:07
阅读 362
文章由 美篇工作版 编辑制作
投诉