有趣的二进制算法小魔术

标签: 算法c
3877人阅读 评论(0) 收藏 举报
分类:

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

    这个魔术其实很简单,魔术师会先后展示给观众 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/】

 

 

 

 

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:4303249次
    • 积分:45832
    • 等级:
    • 排名:第73名
    • 原创:587篇
    • 转载:514篇
    • 译文:19篇
    • 评论:877条
    文章存档
    最新评论