揭开《猜姓》游戏的奥秘曾见街头有人摆摊猜姓摊主面前摆着七八张写着姓氏的纸片,只要有人说出那几张纸片上有他的姓氏,那几张纸片上没有,摊主立马就能准确说出他的姓氏来《猜姓》游戏与《猜年龄》游戏一样,运用的是二进制数与十进制数的换算知识这两种游戏又都是最低级的密码游戏大家对电视剧中的发报场面很熟悉,这边一个发报员,那边一个收报员发报员把要传送的信息编成密码(密文)发送出去,收报员收到电报密码(密文)后,对照密码本把密文翻译成明文就知道了发报员发送的信息《猜姓》游戏就是这样摊主相当于收报员(处主动地位),他面前摆着的几张纸片就是密码本,其他参与者是发报员(处被动地位)密码本是摊主编辑的,其他参与者对此毫不知情密码、密码本是这样生成的:以 6 张写着姓氏的纸片外加一张姓氏对照表为例6 张纸片就是要用 6 位二进制数作为系列密码每张纸片表示一个二进制数数位因为最大的 6 位二进制数[111111]2=63,所以,能猜 63 个姓氏如果是 7 张纸片,就是用 7 位二进制数为系列密码,能猜出[1111111]2=127 个姓氏来先按顺序(也可打乱顺序)取《百家姓》中前(也可根据各地姓氏特点挑选)63 个姓氏,顺次用十进制数编好序号(未加密的密码),就得出了姓氏对照表。
如下:姓氏对照表1 赵 2 钱 3 孙 4 李 5 周 6 吴 7 郑 8 王9 冯 10 陈 11 褚 12 卫 13 蒋 14 沈 15 韩 16 杨 17 朱 18 秦 19 尤 20 许 21 何 22吕 23 施 24 张 25 孔 26 曹 27 严 28 华 29 金 30 魏 31 陶 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 史 再把姓氏前的序号(密码)换算成二进制 6 位数(加密——为了使他人更难弄懂)赵 1=[000001]2钱 2=[000010]2孙 3=[000011]2······鲍 62=[111110]2史 63=[111111]2 这些二进制 6 位数就是其对应的姓氏经过加密后的密码。
为什么要用二进制数作为系列密码?因为二进制数每个数位上的数字只有 0 或 1 两种选择,这样处理起来方便然后,按数位顺序([C5C4C3C2C1C0])把 0 位是 1的姓氏写在表一里,1 位是 1 的姓氏写在表二里,2位是 1 的姓氏写在表三里,余类推得出 6 张写着姓氏的纸片每张纸是一个表每个表中都有2×2×2×2×2=32 个姓氏如下:表一(0 位是 1 的姓氏)赵 孙 周 郑 冯 褚 蒋 韩 朱 尤 何 施 孔 严 金 陶戚 邹 柏 窦 云 潘 奚 彭鲁 昌 苗 花 俞 袁 酆 史表二(1 位是 1 的姓氏)钱 孙 吴 郑 陈 褚 沈 韩秦 尤 吕 施 曹 严 魏 陶谢 邹 水 窦 苏 潘 范 彭 韦 昌 凤 花 任 袁 鲍 史表三(2 位是 1 的姓氏)李 周 关 郑 卫 蒋 沈 韩许 何 吕 施 华 金 魏 陶喻 柏 水 窦 葛 奚 范 彭 马 苗 凤 花 柳 酆 鲍 史表四(3 位是 1 的姓氏)王 冯 陈 褚 卫 蒋 沈 韩张 孔 曾 严 华 金 魏 陶章 云 苏 潘 葛 奚 范 彭 方 俞 任 袁 柳 酆 鲍 史表五(4 位是 1 的姓氏)杨 朱 秦 尤 许 何 吕 施张 孔 曾 严 华 金 魏 陶郎 鲁 韦 昌 马 苗 凤 花方 俞 任 袁 柳 酆 鲍 史表六(5 位是 1 的姓氏)姜 戚 谢 邹 喻 柏 水 窦 章 云 苏 潘 葛 奚 范 彭 郎 鲁 韦 昌 马 苗 凤 花方 俞 任 袁 柳 酆 鲍 史每张表中姓氏的顺序可打乱,那样更能迷惑人。
到此,密码、密码本就编好了游戏过程就是一个“发报——收报——密文——明文”的过程发报——收报:摊主在编辑密码前就已经定义了1 和 0 的意义,1 表示有,0 表示无当其他参与者回答摊主那几张纸(表)上有他的姓氏,那几张没有时,就充当了一个被动的发报员,把自己姓氏的密码在不知情的情况下发送给了摊主那几张纸上有,这张纸所代表的数位上的数字就是 1,没有就是 0摊主收到了这些信息,就得出了对方姓氏对应的密码——一个二进制 6 位数(密文)以下就是把(密文)翻译成明文了密文——明文:摊主收到的原始密码(一个二进制 6 位数)是一个经过了加密的密文,把这个二进制6 位数换算成十进制数就得到了解密的密文,再把这个十进制数作为序号对照姓氏对照表(密码本),找出所对应的姓氏,就把密文翻译成了明文对方姓氏是啥就明白了例如:有人说表三、表五中有他的姓氏,余没有就是说他的姓氏密码 2 位、4 位上是 1,其它数位上是 0,这个数是[010100]2,换算成十进制数是[010100]2=20,查姓氏对照表,20 对应的姓氏是许所以,这人姓许当然,实际操作起来没这么复杂根据[C5C4C3C2C1C0]2=C5×32+C4×16+C3×8+C2×4+C1×2+C0×1知二进制数 0 位、1 位、2 位、3 位、4 位、5位上的 1 所代表的十进制数分别是1、2、4、8、16、32。
所以,只要记住表一、表二、表三、表四、表五、表六所对应的数分别是1、2、4、8、16、32 就行这样,只要有人说出那几张纸上有他的姓氏,只需把这几张纸对应的数加起来,所得和就是他的姓氏在姓氏对照表中的序号对号入座就知道他姓什么了还以许为例,表三、表五中有,余没有表三、表五分别对应 4、164+16=20查姓氏对照表,20对应许,所以他姓许实际玩这游戏时,每张纸片上不需标出表一、表二的字样,只要标上一个自己明白的记号就行姓氏对照表也不需出示于人,可熟记于心,这样让人觉得更玄破解破解《《 猜年龄猜年龄》》游戏之迷游戏之迷一天,几个学生问我:“老师,昨天 我们去逛集,看到一老人在摆地摊猜年龄, 我们几个都输了钱你能帮我们解开其中 之迷吗?”原来,那老人面前的地摊上摆 着 6 张纸,每张纸上都写着 32 个数字,只 要你说出那几张纸上有你的年龄数,他就 能一口说出你的年龄来他若说对了,你 给他 1 块钱;若是说错了,他就赔你 10 块 钱 其实,这就是个二进制游戏,耍的是 十进制数与二进制数换算的花枪6 张写着 数字的纸就是特制的 6 张表,这 6 张特制 的表能表示出任意一个二进制 6 位数。
最 大的二进制 6 位数是[111111]2=63,所以这 6 张纸上按规律列着 1~63 这 63 个数字, 能猜出不大于 63 岁的任何一个人的年龄设二进制 6 位数的一般形式为[C5C4C3C2C1C0]2,C0、C1、C2、C3、C4、C5分别表 示二进制数 0 位、1 位、2 位、3 位、4 位、 5 位上的数字先把 1~63 这 63 个十进制 数通过换算表示成二进制 6 位数:1=[000001]2 2=[000010]2 3=[000011]2 ······ 62=[111110]2 63=[111111]2 再把 0 位是 1 的数按从小到大的顺序 列在表一里,1 位是 1 的数也照样列在表二 里,2 位是 1 的数照样列在表三里,余此类 推得表如下:表一(0 位是 1 数)13579111315 1719212325272931 3335373941434547 4951535557596163表二(1 位是 1 的数)2367101114151819222326273031 3435383942434647 5051545558596263 表三(2 位是 1 的数)456712131415 2021222328293031 3637383944454647 5253545560616263表四(3 位是 1 的数)89101112131415 2425262728293031 4041424344454647 5657585960616263 表五(4 位是 1 的数)1617181920212223 2425262728293031 4849505152535455 5657585960616263表六(5 位是 1 的数)3233343536373839 4041424344454647 48495051525354555657585960616263 二进制数每个数位上的数字要么是 0, 要么是 1,就此两种选择。
上述各表都是先 确定一个数位上的数字,另五个数位上的 数字都有 0 与 1 两种选择,所以每张表中 都有2×2×2×2×2=32 个数 游戏原理:对于一个数如果能确定它 每个数位上的数字是几,就能确定 这个数 是多少 如:一个数个位上是 3,十位上是 6, 百倍上是 9,这个数就是 963十进制数是 这样,二进制数也是这样 猜年龄游戏中,先让人说出那几张表 中有他的年龄数,余下各表没有,就是借 此确定二进制 6 位数中各个数位上的数字 那几张表中有他的年龄数,就是说那几个 数位 上是 1(表一中有,0 位是 1;表二中 有,1 位是 1;余此类推);余下各表没有, 就是说余下各个数位上是 0如此,这个二 进制数是多少就确定出来了,再换算成十 进制数也很容易[C5C4C3C2C1C0]=C5×32+C4×16+C3×8+ C2×4+C1×2+C0×1 上式是说二进制数中 0 位、1 位、2 位、 3 位、4 位、5 位上的 1 分别表示十进制数 1、2、4、8、16、32 如此,若确定了二进制数那几个数位 上的数是 1,只要把这几个数位上的 1 所表 示的十进制数相加,得出的和就是这个二 进制数换算成的十进制数了。
再看表一至表六左上角的数,正好是 1、2、4、8、16、32所以,只要说出那 几张表上有他的年龄数,就把那几张表左 上角的数相加,得出的和就是他的年龄 例如:表二、表三、表五中有甲的年 龄,余表没有甲年龄是多少? 解:把表二、三、五左上角的数 2、4、16 相加得 2+4+16=22(岁) 所以,甲是 22 岁 猜年龄游戏就是先通过表上指证确定 年龄的二进制数,再换算成十进制数,这 样一个过程若要猜出大于 63 岁的人的年龄,列七 张表就行最大的二进制七位数是 [1111111]2=127 所以,列七张表能猜 出不大于 127 岁年龄段内任何一个人的年 龄来。