有趣的二进制算法小魔术

转载 2011年01月18日 21:07:00

    你对星座有兴趣吗?传说星座与人的性格、命运、爱情、事业、友情、家庭都有紧密联系,不过魔术师说,那些都是浮云。“我今天为你表演一个靠谱的,我要用心 灵来感知你的星座。如果你对星座一无所知,就先看一下下面这张表吧,一年一共有十二个星座,你属于哪一个星座取决于你的出生日期。”

    这个魔术其实很简单,魔术师会先后展示给观众 A、B、C、D 四张图片,每一次观众只需要仔细看一看,自己的星座有没有位列其中。

    举个例子,如果你是史上最不幸的、每四年才可以过一次生日的那个人,出生日期是 2 月 29 日,那你的星座一定是双鱼座。这样,你的星座只有在图片 C 和 D 中才可以看到,在图片 A、B 中都看不到。把这个结果告诉魔术师,魔术师经过一番心灵感应后,就可以确定你是双鱼座。

魔术揭秘

    对于不明真相的围观者来说,这个魔术会显得很神奇。不过,一部分理工男却能一眼看穿魔术的蹊跷之处。魔术师具体的做法是,首先在心里安装一个“计数 器”,一开始数字为 0。如果你的星座出现在了卡片 A 中,魔术师就会在计数器上加 1,否则计数器数字不变;如果图片 B 中有你的星座,他就会再加上 2 ;图片 C 中有你的星座,计数器就加上 4;图片 D 中有你的星座,计数器就会加 8。计数器最后得到的数字就是答案了。比如按照刚刚那位“生日帝”告诉魔术师的结果,计数器的数字就是 4 + 8 = 12。然后,让文章开头那张图中隐藏的数字显示出来:

    数字对应的结果就是心灵感应到的星座了。

二进制计数法

    正常情况下,数字 12 可以写成 1×10 + 2×1,其中 1 是十位数字,2 是个位数字。如果这个数字更大,还会有百位、千位等等。这些数位的单位从小到大分别是 1、10、100、1000⋯⋯

    可是我们还可以用另一种方式来表示一个数,就是魔术师所用的方式——二进制。在二进制中,12 = 1×8 + 1×4 + 0×2 + 0×1,在这里,数位的单位由 1、10、100、1000 变成了 1、2、4、8,同时每个数位上的数字也由 0 到 9 十种变为了 0 和 1 两种,12 也就可以用 1100 来表示了。卡片 A、B、C、D 分别是从小到大的 4 个数位,由于 12 号星座——双鱼座——的二进制表达是 1100,因此双鱼座就只在卡片 C 和 D 上出现。在四张卡片上指认星座的时候,你也就把星座对应的数字的二进制表达偷偷泄露给了魔术师,如果你告诉魔术师有,就相当于告诉他了那一位数字是 1,反之,那一位数字就是 0。

    二进制的用途非常广泛。计算机正是像这位魔术师一样,用二进制来表示各种数字。

 

转自【http://www.guokr.com/article/5196/】

 

 

 

 

 

相关文章推荐

数学小魔术——神奇的二进制

小魔术——猜数游戏 心中默想一个小于50的两位数 接着,我问你在以下的6张卡片中,哪几张卡片中有你想的那个数?(为什么是6张卡片,和50有什么关系) 最后,我不费吹灰之力就能猜出这个数。...

有趣的二进制 完整版

  • 2017年07月30日 15:00
  • 7.98MB
  • 下载

《有趣的二进制》学习笔记(持续更新)

1.1.1学习首先遇到了Process Monitor不太会用的情况。这里很简单的讲一下Process Monitor的使用。个人觉得比较方便的是建立一个空文件夹在桌面,这里我建立一个文件夹名为lab...

区域填充:扫描线种子填充算法应用(类似魔术棒功能)

/* * * 算法的基本过程如下: * 当给定种子点(x, y)时, * 首先分别向左和向右两个方向填充种子点所在扫描线上的位于给定区域的一个区段, * 同时记下这个区...

一个有趣的回溯算法

  • 2012年09月30日 16:38
  • 652B
  • 下载

有趣的c语言算法经典

  • 2011年05月11日 09:36
  • 315KB
  • 下载

有趣算法-堆排序学习整理

堆排序 数据结构 算法 二叉堆 完全二叉树 排序
  • sz66cm
  • sz66cm
  • 2016年08月16日 16:27
  • 2976
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:有趣的二进制算法小魔术
举报原因:
原因补充:

(最多只允许输入30个字)