`

二进制在数学中的妙用

 
阅读更多
原文地址:http://blog.csdn.net/hackbuteer1/article/details/6716603
十八世纪初,莱布尼茨发明了二进制数,当时的他肯定没有预料到二进制在信息时代会有着如此广泛的应用。二进制数以其工作可靠,运算简单,逻辑严密,容易实现等特点,成为了计算机的专用语言。在计算机科学和大量应用数学领域中,二进制记数法是必不可少的。在趣味数学方面,同样也有广泛的应用。
让我们先来看一个经典的数学趣题:

一工人工作7天,老板有一段黄金,每天要给工人1/7的黄金作为工资,老板只能切这段黄金2刀,请问怎样切才能每天都给工人1/7的黄金?

这题不简单吧?小心别把脑子都想破了。



在给出答案之前,先让我们看另一个简单的例子:

用天平称1~63克整数克重的物品,至少要配备几只多重的砝码(砝码只能放在天平的一端)?

没有学过二进制的人是很难想到答案的,可是如果你知道二进制数,那就不难了。我们知道二进制中只有0和1两个数字,它的各位数字的权值从小到大依次为2^0,2^1,2^2,2^3,。。。。我们用一个数的每位数字乘以其权值所得到的乘积之和来表示这个数。对于一个具有8位的二进制数来说,它可以表示的数据范围是0~2^8。

63 = 2^6 – 1 = 2^0 + 2^1 + 2^2 + 2^3 + 2^4 + 2^5

所以,我们只需配备2^0 =1,2^1 = 2,2^2 = 4,2^3 = 8,2^4 = 16,2^5 = 32六种不同克数的砝码各一个。

类似的题目还有如何装苹果:

现有一笔出售苹果的生意,已知客人可能需要的苹果数量肯定是1个到1000个之间,但不知道具体数字。客人要求必须全部用他提供的箱子装整箱(每个箱子都最多可以装1000个苹果),箱子一旦装成就无法再拆开重装。

你手中有1000个苹果,10个箱子,客人需要的苹果数量未知,问怎么装才能满足客人的需要?

解题的原理和上题是一样的,都是利用二进制数的记数原理。因为1000 < 2^10 = 1024,所以只要使用2^0,2^1,2^2,2^3,2^4,2^5,2^6,2^7,2^8,2^9十个数,就可以表示1到1023之间的所有数。

例如:30 = 2^1 + 2^2 + 2^3 + 2^4;75 = 2^0 + 2^1 + 2^3 + 2^6等。

但是现在苹果的总数不是1023个,而是1000个,所以第10个箱子装的苹果数不是512个,而是489个。

1000 = 1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 + 256 + 489;

所以这10个箱子中每个箱子依次装1,2,4,8,16,32,64,128,256,489个苹果,就可以满足整箱提供给客人任意数量苹果的要求。

现在明白第一个题目的解法了吧?对!就是二进制。

因为7 < 2^3 = 8,所以只要使用2^0,2^1,2^2三个数,就可以表示1到7之间的所有数。那么我们只要把金条分成三份,比例为1:2:4,也就是第一刀切下金条的七分之一(设为A),第二刀切下金条的七分之二(设为B),剩下的部分刚好为金条的七分之四(设为C)。我们只要按照如下的方法发放工资,就解决问题了:

第一天-->给长工A; (1 = 2^0)

第二天-->给长工B,并把A拿回来;(2 = 2^1)

第三天-->给长工A;(3 = 2^0 + 2^1)

第四天-->给长工C,并把A、B拿回来;(4 = 2^2)

第五天-->给长工A;(5 = 2^0 + 2^2)

第六天-->给长工B,并把A拿回来;(6 = 2^1 + 2^2)

第七天 给长工A。(5 = 2^0 + 2^1 + 2^2)

上面三个问题已经很能说明二进制在趣味数学中的应用了,我们使用这种方法可以解决一系列的此类问题。下面是一个有趣的药瓶问题:

    一家药店收到运来的某种药品十瓶。每瓶装药丸1000粒。药剂师怀特先生刚把药瓶送上架子,一封电报接踵而来。怀特先生把电报念给药店经理布莱克小姐听。

怀特先生:“特急!所有药瓶须检查后方能出售。由于失误,其中有一瓶药丸每粒超重10毫克。请即退回分量有误的那瓶药。怀特先生很气恼。

怀特先生:“倒霉极了,我只好从每瓶中取出一粒来称一下。真是胡闹。

怀特先生刚要动手,布莱克小姐拦住了他。布莱克小姐:“等一下,没必要称十次,只需称一次就够了。”

这怎么可能呢?

布莱克小姐的妙主意是从第一瓶中取出1粒,从第二瓶中取出2粒,第三瓶中取出3粒,以此类推,直至从第十瓶中取出10粒。把这55粒药丸放在秤上,记下总重量。如果重5510毫克,也就是超过规格10毫克,她当即明白其中只有一粒是超重的,并且是从第一瓶中取出的。

如果总重量超过规格20毫克,则其中有2粒超重,并且是从第二瓶中取出的,以此类推进行判断。所以布莱克小姐只要称一次,不是吗?



六个月后,药店又收到此种药品十瓶。一封加急电报又接踵而至,指出发生了一个更糟糕的错误。

这一次,药丸每粒超重仍然是10毫克,但是对超重药丸的瓶数无可奉告,也就是说可能有好几个药瓶超重。怀特先生气恼极了。怀特先生:“布莱克小姐,怎么办?我们上次的方法不中用了。布莱克小姐没有立即回答,她在思索这个问题。

布莱克小姐:“不错。但如果把那个方法改变一下,我们仍然只需称一次就能把分量有误的药品识别出来。这回布莱克小姐又有什么好主意?

请大家仔细思考,然后运用二进制原理来解决吧。

在第一个秤药丸问题中,我们知道只有一瓶药丸超重。从每瓶中取出不同数目的药丸(最简单的方式就是采用计数序列),我们就可使一组数字和一组药瓶成为一一对应的关系。

为了解决第二个问题,我们必须用一个数字序列把每瓶药单独标上某个数字,且此序列中的每一个子集必须有一个单独的和。有没有这样的序列?有的,最简单的就是下列二重序列:1,2,4,8,16,。。。这些数字是2的连续次幂,这一序列为二进制记数法奠定了基础。

在这个问题中,解法是把药瓶排成一行,从第一瓶中取出1粒,从第二瓶中取出2粒,从第三瓶中取出4粒,以此类推。取出的药丸放在秤上称一下。假设总重量超重270毫克,由于每粒分量有误的药丸超重10毫克,所以我们把270除以10,得到27,即为超重药丸的粒数。把27化成二进制数:11011。在11011中自右至左,第一,二,四,五位上的“1”表示其权值分别为1,2,8,16。因此分量有误的药瓶是第一,二,四,五瓶。

这里有一个简单的扑克魔术,可叫你的朋友莫名其妙。这个戏法也许看上去与砝码问题毫无关系,但他们的依据是相同的,都是二进制原理。

请别人把一副牌洗过,然后放进你的口袋,再请人说出一个1至15以内的数字。然后你把手插进你的口袋里,一伸手就取出一组牌,其数值相加正好等于他所说的数字。

此秘密简单的很。在耍魔术之前,预先取出A,2,4,8各一张放入口袋。这副牌缺少区区四张,不大可能为人察觉。洗过的牌放入口袋后,暗中将其排置于原先已经放在口袋中的四张牌的后面。请别人说出一个数字,你用心算将此数表示成2的幂的和。如果是10,那你就应想到:8+2=10,随即伸手入袋,取出2和8的牌示众。

心灵感应游戏的依据也是二进制原理,准备五张卡片,分别记为A,B,C,D,E,上面写着1~31之间的一些整数。请一位观众想好此范围内的一个数字(例如某个人的年龄),然后请他把所有上面有此数字的卡片都交给你。你随即说出他心中所想的那个数字。

卡片如下:

A:1   3   5   7

   9   11  13  15

   17  19  21  23

   25  27  29  31

B:2   3   6   7

   10  11  14  15

   18  19  22  23

   26  27  30  31

C:4   5   6   7

   12  13  14  15

   20  21  22  23

   28  29  30  31

D:8   9  10   11

   12  13  14  15

   24  25  26  27

   28  29  30  31

E:16  17  18  19

   20  21  22  23

   24  25  26  27

   28  29  30  31

秘诀就是把每张卡片上2的幂的第一个数字相加。例如,如果把卡片C和E交给你,你只要将上面第一个数字4和16相加,便知道别人心中所想的数字是20。

这是为什么呢?

我们观察卡片上的数字,可以发现这样一个规律:第一张卡片(A)上的数字如果用五位二进制表示,则分别为00001,00011,00101,00111,01001,01011,01101,01111,10001,10011,10101,10111,11001,11011,11101,11111。

第二张卡片(B)上的数字如果用五位二进制表示,则分别为00010,00011,00110,00111,01010,01011,01110,01111,10010,10011,10110,10111,11010,11011,11110,11111。

第三张卡片(C)上的数字如果用五位二进制表示,则分别为00100,00101,00110,00111,01100,01101,01110,01111,10100,10101,10110,10111,11100,11101,11110,11111。

请大家注意观察,第一张卡片上每个二进制数的右起第一位都是“1”,第二张卡片上每个二进制数的右起第二位都是“1”,第三张卡片上每个二进制数的右起第三位都是“1”。依此类推,我们可以发现第n张卡片上每个二进制数的右起第n位都是“1”。

观众所想的数字和卡片的关系只有“有”和“无”两种状态,正好与二进制数码0与1一一对应。“有”我们就记为“1”,“无”我们就记为“0”,这样观众交给我们的卡片组合,就对应一个二进制数,如把卡片C和E交给你,那卡片组合就是“有无有无无”,对应二进制数为“10100”,即十进制数“20”。又如把卡片A,B和E交给你,那卡片组合就是“有无无有有”,对应二进制数为“10011”,即十进制数“19”。

二进制数的位数越多,能够表示的数值就越大,如果有6张卡片,则表示的数字范围扩大到1~63,7张卡片则可以表示1~127。

有时,魔术师为了使得这个戏法显得更加玄妙,故意把每张卡片涂上各种不同的颜色。他只需记住每种颜色所代表的2的幂。例如,红卡片代表1,橙卡片代表2,黄卡片代表4,绿卡片代表8,蓝卡片代表16,紫卡片代表32(可依据彩虹的诸色顺序)于是,魔术师站在大房间的一头,请人想好一个数字,并且把上面有此数字的卡片置于身旁,他即可根据那人身旁的卡片的颜色随口说出别人心中所想的数字。

根据这个原理,人们还设计来好玩的猜姓氏和年龄的游戏:

表演者拿出七张卡片,每张卡片上都写满了数字和姓氏,卡片如下:

表一:

赵1 孙3 周5 郑7 冯9 褚11 蒋13 韩15

朱17 尤19 何21 施23 孔25 严27 金29 陶31

戚33 邹35 柏37 窦39 云41 潘43 奚45 彭47

鲁49 昌51 苗53 花55 俞57 袁59 邦61 史63

费65 岑67 雷69 倪71 滕73 罗75 郝77 安79

乐81 时83 皮85 齐87 伍89 元91 顾93 平95

和97 肖99

表二

钱2 孙3 吴6 郑7 陈10 褚11 沈14 韩15

秦18 尤19 吕22 施23 曹26 严27 魏30 陶31

谢34 邹35 水38 窦39 苏42 潘43 范46 彭47

韦50 昌51 凤54 花55 任58 袁59 鲍62 史63

廉66 岑67 贺70 倪71 殷74 罗75 邬78 安79

于82 时83 卞86 齐87 余90 元91 孟94 平95

穆98 肖99

表三:

李4 周5 吴6 郑7 卫12 蒋13 沈14 韩15

许20 何21 吕22 施23 华28 金29 魏30 陶31

喻36 柏37 水38 窦39 葛44 奚45 范46 彭47

马52 苗53 凤54 花55 柳60 邦61 鲍62 史63

薜68 雷69 贺70 倪71 毕76 郝77 邬78 安79

傅84 皮85 卞86 齐87 卜92 顾93 孟94 平95

尹100

表四

王8 冯9 陈10 褚11 卫12 蒋13 沈14 韩15

张24 孔25 曹26 严27 华28 金29 魏30 陶31

章40 云41 苏42 潘43 葛44 奚45 范46 彭47

方56 俞57 任58 袁59 柳60 邦61 鲍62 史63

汤72 滕73 殷74 罗75 毕76 郝77 邬78 安79

廉88 伍89 余90 元91 卜92 顾93 孟94 平95

表五

杨16 朱17 秦18 尤19 许20 何21 吕22 施23

张24 孔25 曹26 严27 华28 金29 魏30 陶31

郎48 鲁49 韦50 昌51 马52 苗53 凤54 花55

方56 俞57 任58 袁59 柳60 邦61 鲍62 史63

常80 乐81 于82 时83 傅84 皮85 卞86 齐87

廉88 伍89 余90 元91 卜92 顾93 孟94 平95

表六:

吴32 成33 谢34 邹35 喻36 柏37 水38 窦39

章40 云41 苏42 潘43 葛44 奚45 范46 彭47

郎48 鲁49 韦50 昌51 马52 苗53 凤54 花55

方56 俞57 任58 袁59 柳60 邦61 鲍62 史63

黄96 和97 穆98 肖99 尹100

表七:

唐64 费65 廉66 岑67 薜68 雷69 贺70 倪71

汤72 滕73 殷74 罗75 毕76 郝77 邬78 安79

常80 乐81 于82 时83 傅84 皮85 卞86 齐87

廉88 伍89 余90 元91 卜92 顾93 孟94 平95

黄96 和97 穆98 肖99 尹100

表演者说:“任何人只要你的年龄和姓氏在这几张上,我都可以立即猜中。”

他的话音刚落,有人说:“我的年龄在第一张表上。”

“别的表上都没有么?”表演者问。

那人又详细地端详一下,补充说:“第三张、第五张表上也有。”

“凡是表上有的,不能遗漏!”表演者说,“如果你的年龄只在第一、三、五三张表上,那么你的年龄应该是21岁。”

果然猜中了!

又有人说;“我的姓在二、三、四、五、七表上有。”

“这就是说,你是孟老夫子的后代了!”

人们接二连三地问,表演者一个个回答,竟然没有一次失误,大家惊奇得目瞪口呆。可是,谁都不了解这奇特的表格里隐藏着的秘密,除了聪明的你。

赶快给大家揭开其中的奥秘吧!
分享到:
评论

相关推荐

    2019趣味数学:妙想奇思割手链.pdf

    标题中的“趣味数学:妙想奇思割手链”是一个涉及数学思维和策略的问题,而描述则给出了一个具体的场景,即格罗莉亚需要用她的金手链支付旅馆住宿费用。这个故事引出了一个数学问题,如何以最少的切割次数将手链分割...

    趣味数学:妙想奇思割手链-2019年学习文档.pdf

    总结来说,"割手链"问题是一个涉及等比数列和二进制数学的趣味数学问题。通过理解2的幂次以及如何用它们来构建任意正整数,我们可以找到最小切割次数来满足特定的需求。这种问题锻炼了逻辑思维和数学建模能力,同时...

    binary-warz:一款 Android 纸牌游戏应用,可帮助计算机科学和软件工程师的学生更多地了解二进制数和基本数学运算,例如加法、减法等

    总的来说,"二进制战争"巧妙地将教育和娱乐结合在一起,为学习者提供了一个互动式的平台,让他们在解决有趣的游戏挑战中掌握二进制和基本数学运算,同时也了解和实践了编程基础。对于想要提升计算机科学技能的学生来...

    妙用Win7系统时钟和计算器.docx

    3. **程序员模式**:适合编程人员,提供了二进制、八进制、十进制和十六进制之间的转换,以及位运算。 4. **统计模式**:用于处理统计数据,例如平均值、中位数、模式等。 通过在计算器顶部的下拉菜单中选择不同的...

    11-重难点妙招设计单(1).docx

    小数的意义是数学中一个重要的概念,它扩展了我们对数量和度量的理解,尤其是在十进制系统中。小数可以用来表示不完整的整数部分,如分数0.5代表半个,或者更精确的数值,如0.25代表四分之一。在教学过程中,通过...

    妙用Windows 7系统的时钟和计算器.docx

    - **程序员型**: 可以进行二进制、八进制、十进制和十六进制之间的转换,非常适合编程人员使用。 - **统计信息**: 提供统计学相关的计算功能,如平均值、方差等。 **4. 实用的计算工具** - **日期计算**: 可以...

    大学计算机实践教程:第2章 计算系统的基本思维.pptx

    在2.1.3节中,二进制被用于表示数值信息,比如算术运算。二进制数系统简化了计算机对数值的处理,因为它的加减乘除规则相对简单。2.1.4节进一步讨论了如何用0和1来编码非数值信息,如字符和图像。 2.1.5和2.1.6节则...

    Scratch蓝桥杯科学素养考试卷初级组模拟题附答案

    17. **排序算法**:题目描述了一种简单的排序过程,“这种排队方式与计算机中的()算法有着异曲同工之妙”。这与计算机科学中的排序算法(如冒泡排序)原理相似,有助于学生理解算法的实际应用场景。 18. **算法...

    最新NOIP2022初赛普及组C++题目及答案2.pdf

    2. 二进制数 11.01 在十进制下是 3.25。 该题考查了二进制数的十进制表示法。 3. 下面的故事与递归算法有着异曲同工之妙。 该题考查了递归算法的应用场景。 4. 逻辑表达式 (A ∨ B) ∧¬(A ∧ B) 的值与变量 A 的...

    《妙趣横生的算法(C语言实现)》(杨峰 编著)

    4.3 嵌套if.else语句的妙用 4.4 基于switch语句的译码器 4.5 判断闰年 4.6 指针变量作参数 4.7 矩阵的转置运算 4.8 矩阵的乘法运算 4.9 巧用位运算 4.10 文件的读写 4.11 计算文件的大小 4.12 记录程序的运行时间 ...

    2009-2013NOIP初赛提高组C++试题

    - **知识点**:二进制和十进制是数字系统中最常见的两种计数方式,了解它们之间的转换对于计算机编程至关重要。 - **题目示例**:“二进制数11.01在十进制下是()。” - **答案解析**:A.3.25。二进制11.01转换为十...

    NOIP2013提高组初赛试题答案C++.pdf

    - **题目**:二进制数11.01在十进制下是多少? - **答案解析**:二进制数转换为十进制的方法是从右往左,每位乘以2的相应次方然后累加。所以,11.01(二进制) = 1 * 2^1 + 1 * 2^0 + 0 * 2^-1 + 1 * 2^-2 = 2 + 1 + ...

    算盘:算盘是简化单位处理的工具

    这种转化机制,与现代计算机中的二进制逻辑运算有着异曲同工之妙。 标签中提及的“hex”、“elixir”、“otp”、“types”、“metrics”和“measurements”,这些都是与现代编程语言和计算环境相关的概念。在Elixir...

    NOIP2013普及组初赛C++试题

    二进制数11.01在十进制下是()。** - **答案:** A.3.25 - **解析:** 二进制数11.01转换为十进制的过程如下:1 * 2^1 + 1 * 2^0 + 0 * 2^-1 + 1 * 2^-2 = 2 + 1 + 0 + 0.25 = 3.25。 **3. 下面的故事与()算法...

    NOIP2013初赛普及组C试题.docx

    二进制数11.01在十进制下是( )。** - **知识点:** 二进制转十进制 - **解析:** 二进制数11.01转换为十进制时,可以通过计算二进制各位的权值来完成。11.01的十进制值为 \(1 \times 2^1 + 1 \times 2^0 + 0 \...

    NOIP2013初赛提高组C++试题及答案

    - **解析:** 克劳德·香农是信息论的奠基人之一,他在1948年的论文《通信的数学理论》中首次提出了信息熵的概念,并将其作为衡量信息量的一个标准。 **5. 已知一棵二叉树有2013个节点,则其中至多有()个节点有2...

    计算机导论-初识计算机

    分析机的特点包括使用二进制系统、卡片输入等,这些设计理念成为了现代计算机的基础。 ##### 软件领域的先驱 - **Ada的贡献**:Ada Lovelace是计算机历史上的一位重要人物,她与巴贝奇合作研究分析机,并编写了一...

    基于单片机的计算器

    程序源代码可能是C或汇编语言,通过编译器生成可烧录到单片机的二进制文件。项目文档可能包含了设计思路、步骤、注意事项等信息,帮助理解和复现项目。 总的来说,基于单片机的计算器项目不仅涵盖了单片机的基础...

    亮剑.NET深入体验与实战精要2

    1.5.2 @符号的妙用 54 1.5.3 预处理指令,有你更轻松 55 1.6 Visual Studio.NET 2008 实战 58 1.6.1 如何创建ASP.NET项目 58 1.6.2 如何创建Windows项目 61 1.6.3 Visual Studio.NET 2008 操作与使用技巧 61 ...

    亮剑.NET深入体验与实战精要3

    1.5.2 @符号的妙用 54 1.5.3 预处理指令,有你更轻松 55 1.6 Visual Studio.NET 2008 实战 58 1.6.1 如何创建ASP.NET项目 58 1.6.2 如何创建Windows项目 61 1.6.3 Visual Studio.NET 2008 操作与使用技巧 61 ...

Global site tag (gtag.js) - Google Analytics