有趣的二进制算法小魔术

转载 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有什么关系) 最后,我不费吹灰之力就能猜出这个数。...
  • lanchunhui
  • lanchunhui
  • 2016年01月19日 15:02
  • 2921

1分钟教会你二进制撩妹(汉)读心术

近些年来,小魔发现,对于年轻的男女而言,一些传统的节日似乎都变成了情人节或者脱单节,就连“光棍节”,实际上很多人都是抱着节前或者是当天脱单而过的。双11“光棍节”即将来临,为了祝福大家脱单能取得成功,...
  • weixin_36841920
  • weixin_36841920
  • 2017年12月21日 18:49
  • 126

有趣的二进制算法小魔术

数学魔术:四张卡片猜出你的星座
  • softwave
  • softwave
  • 2011年01月18日 21:07
  • 4263

Qt文件读写

今天开始进入 Qt 的另一个部分:文件读写,也就是 IO。文件读写在很多应用程序中都是需要的。Qt 通过 QIODevice 提供了IO的抽象,这种设备(device)具有读写字节块的能力。常用的IO...
  • xgy_123
  • xgy_123
  • 2014年03月13日 23:22
  • 1460

OpenCV成长之路(3):模仿PhotoShop中魔术棒工具

模仿PhotoShop中魔术棒工具 本文的主题实际上是图像的颜色空间的转换,借助一个颜色选取程序来说明OpenCV中颜色转换函数的用法以及一些注意事项。 一、几种常见的颜色空间: RGB颜色空间:RG...
  • RonnyYoung
  • RonnyYoung
  • 2013年12月20日 11:29
  • 1870

数学小魔术——猜数字

数学小魔术——神奇的二进制 请你任意猜想一个三位数,把这个三位数乘以 91 的乘积的最后三位告诉我,我们很快猜出你心中所想的那个三位数是多少? 我们以对方心中所想的 789 为例,则对方计算出 ...
  • lanchunhui
  • lanchunhui
  • 2016年01月29日 17:56
  • 3027

如何更好的判断系统上传文件是指定文件类型--文件魔术数字

这里所说的表示不同文件类型的魔术数字,指定是文件的最开头的几个用于唯一区别其它文件类型的字节,有了这些魔术数字,我们就可以很方便的区别不同的文件,这也使得编程变得更加容易,因为我减少了我们用于区别一个...
  • fengspg
  • fengspg
  • 2016年03月03日 15:06
  • 615

Qt学习之路(56): 二进制文件读写

Qt学习之路(56): 二进制文件读写 2010-04-11 17:29:39 标签:Qt C++ 教程 QT教程 学习 原创作品,允许转载,转载时请务必以超链接形式标明文章 原...
  • carrie0728
  • carrie0728
  • 2016年07月13日 16:24
  • 369

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

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

有趣的二进制 读书笔记

二进制初探
  • think_ycx
  • think_ycx
  • 2016年04月17日 12:01
  • 859
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:有趣的二进制算法小魔术
举报原因:
原因补充:

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