1、1第 5 题 猜数游戏古代烽火台是战争中通讯的工具,修建一个烽火台,可以报告有无敌人来犯及来犯敌人的数目。假如修建 6 个烽火台,以 1000 人为单位,6 个烽火台可报告 1000 人63000 人之间的数目。报告方法如下:如图所示有 A、B、C、D、E、F6 座烽火台,烽火台下面依次标上数码 32、 16、 8、 4、 2、 1,现在是 B、 D、 F 3 个烽火台点燃了烽火,就把这 3 个烽火台下面的数目相加,1641= 21。说明有10002121000 名敌人来犯。假如把 A、 D、 E、 F 四个烽火台点燃,由 32421= 39 可知有 1000 39= 39000 名敌人来犯。
2、你知道以上作为发出信号的一方是如何根据敌人来犯的人数点燃烽火台?而作为接受信号的一方,又是如何根据烽火台点燃的情况来计算敌人数目的?分析:从这 6 个烽火台下面的数字可以看出,只要是 1 到 63 之间的任何数,都能使 A、B、 C、D、 E、F6 个烽火台的下面的数字加起来找到。烽火台传数的道理是使用了二进制数。二进制数的最大优点是可以用两个动作表示任何数字。用点燃烽火表示“1”,用熄灭表示“0”。二进制数每一位都固定表示十进制的一个数(见表格)把十进制数化成二进制数往往采用连续用 2 短除,一直除到商等于0 为止。例如将 47 化成二进制数,连续用 2 短除。2得 47= 25 2 3 2
3、 2 2 1 2 0 ,即 47 可写成二进制数 101111,即47(10)=101111(2),其中下角(10)表示十进制,(2)表示二进制。就拿此例来看,以 1000 人为单位,只点燃 F 台,则表示的二进制数是 000001(2)= 1,即有 1000 名敌人;若把 6 座烽火台全部点燃,则表示的二进制数是 111111(2)= 32168421= 63。即有 63000 名敌人。因此,6 座烽火台能传出的敌人数是 1000 人到 63000 人。回顾:有一种猜姓或猜年龄的游戏,也可以利用二进制数与十进制数的转换而得。下面介绍猜年龄的游戏。现有 A、B、C、D、E5 张卡片,上面有被猜
4、人的年龄数。当你把 5张卡片依次给被猜人看,当他看到卡片上有自己年龄时,就回答“有”你就记下“ 1”,当他回答“无”时,你就记下“0”。若对方回答是“无有无无有”你相应记下 01001,这时你就可以按二进制数化十进制数的方法进行计算得:016+1804+ 0211= 9 岁,说明被猜人是 9 岁。若又有被猜人回答是“有有无有有”。你相应地记下11011。计算得 11618041211= 27 岁。3这 5 张卡片实际上是一种编码,将年龄数按二进制数中的“1”和“0”分别放在 5 张卡片中。例如 15 (10)= 01111(2)则将 15 分别写在B、C、D、E 4 张卡片内即可。第一位是“0
5、”,则在 A 卡片中不用写,由此即可编出 A、B、C、D、E 5 张卡片中的数字了。接着,我们自然要问这 5 张卡片能猜到最大年龄是几岁?因为这 5 张卡片所卡片最多能猜到 31 岁。一般地,n 张卡片能表示的最大年龄是多少?应该是 2n - 1 岁。由此可见,要给别人猜年龄,首先你应确定编好几张卡片。这是由最大年龄所决定的。设最大年龄为 a,n 为满足不等式 a2 n-1 的最小自然数,则应编 n 张卡片。至于每张卡片上的年龄数,则是将此十进制位数化为二进制数有“1”的就必须将年龄数写在卡片上。是“0”的位数就不用写在卡片上。注:二进制数与十进制数的转换在现代科学中应用相当广泛。例如,在计算机中通常采用二进制数。一方面是由于二进制数的运算简单,另一方面是由于任何一个二进制数都是由 0 和 1 两个数码组成,这很容易用电子元件来实现,这因为在电学中我们可以用两种稳定的状态来分别表示 0 和 1 ,例如,电灯的亮和灭,脉冲的有和无,晶体管的导通和截止等,而要找出一种具有 10 种稳定状态的元件来表示 10 种不同的数字却很困难,由于二进制数在计算机中容易实现,所以在目前几乎所有的计算机都采用二进制数。练习 51通过猜年龄游戏的卡片编制过程,你能动脑筋编出百家姓的卡片吗?