论文部分内容阅读
说到学习二进制,难免要和“基数”、“权重”这样的抽象概念,或是和一堆枯燥的数字符号打交道,本文介绍两款小游戏,希望学习者能够在直观、形象的互动中逐渐揭开二进制编码的奥秘。
二进制拼图
剪若干张矩形的纸片,纸片的宽度和长度的比例为1:1.414,暂且把这样的形状称为A形拼板,然后在白纸上由大到小画出几个空白框(如图1),不同大小的框的边长比例也是1:1.414,最小的空白框的形状与A形拼板一样。游戏规则很简单:任意取出一些A形拼板,尝试将这些拼板填满几个空白框,注意填完后图形要完整并且拼板不能有多余的。假设由大到小预先设置A、B、C、D共4个框,经过实验可发现,如果有10块拼板,则恰好可以填满A和C(如图2);如果是7块拼板,则可以填满B、C和D。
如果把所填满的框标为1,把空白的框标为0,那么就可以看出,纸片的数量正好对应由框所表示的二进制编码,10张纸片是1010,而7张纸片是0111。很容易看出,之所以有这样的效果,其实与二进制的权重有关。细心的读者可能会发现,实际上并不需要很费心去量尺寸,直接拿标准的A4或A3纸张反复对折,按折痕剪开得到的矩形,其比例正是1:1.414。
二进制牌
找六种不同颜色的“牌”,如红色、黄色、蓝色、绿色、白色、黑色,用现成的小块积木、多米诺骨牌或是用纸板涂上颜色都可以,记住以下规则:①每看到两个红色,则替换成一个黄色;②每看到一个黄色、一个白色,则替换成一个黄色、一个白色、一个蓝色;③每看到一个黄色、一个红色、一个白色,则替换成一个红色、一个白色、一个绿色;④每看到一个黄色,则替换成一个红色;⑤每看到一个黑色、一个红色、一个白色,则替换成一个绿色。
牌的初始状态,都是由一块黑色开始,然后放若干块红色,最后由一块白色结束。然后按规则中的顺序,从第①条替换规则依次做到第⑤条,结束后再重头开始。那么,这些规则究竟有什么用处呢?不妨用“黑红红红红红红白”的初始状态来试一下。第一步:每看到两个红色,则替换成一个黄色,则初始的状态变为“黑黄黄黄白”;第二步:每看到一个黄色、一个白色,则替换成黄、白、蓝,于是状态再变为“黑黄黄黄白蓝”;第三步:黄、红、白变成红、白、绿,由于先前的状态中找不到黄、红、白,于是跳过;第四步:每看到一个黄色,则变成一个红色,于是状态变为“黑红红红白蓝”;第五步:黑、红、白变成绿色,由于先前的状态中找不到黑、红、白,于是跳过;第六步:重新匹配第①条规则,两个红色变一个黄色,于是状态变为“黑黄红白蓝”;第七步:黄、白变成黄、白、蓝,由于先前的状态中找不到黄、白,于是跳过;第八步:黄、红、白变成红、白、绿,于是状态变为“黑红白绿蓝”;第九步:每看到一个黄色,则替换成一个红色,由于先前的状态中找不到黄色,于是跳过;第十步:黑、红、白变成绿色,于是状态变为“绿绿蓝”,由于再也没有可替换的可能了,于是替换就在这里停止。
若将绿看成数字“1”,而将蓝看成数字“0”,那么得到的结果就是110。到这里大家应该可以猜出来了,上述的替换过程,其实是将6张红色的牌,变为6的二进制数。同样的,如果初始状态是“黑红红红红红红红红红红白”,那么得到的结果是“绿蓝绿蓝”,即1010,大家可以自己试一下,即便手边没有任何可以用的材料,这个游戏在记事本中,用“替换—全部替换”的功能,也是可以实现的。大家可以思考一下,这套规则的原理究竟是什么?
二进制拼图
剪若干张矩形的纸片,纸片的宽度和长度的比例为1:1.414,暂且把这样的形状称为A形拼板,然后在白纸上由大到小画出几个空白框(如图1),不同大小的框的边长比例也是1:1.414,最小的空白框的形状与A形拼板一样。游戏规则很简单:任意取出一些A形拼板,尝试将这些拼板填满几个空白框,注意填完后图形要完整并且拼板不能有多余的。假设由大到小预先设置A、B、C、D共4个框,经过实验可发现,如果有10块拼板,则恰好可以填满A和C(如图2);如果是7块拼板,则可以填满B、C和D。
如果把所填满的框标为1,把空白的框标为0,那么就可以看出,纸片的数量正好对应由框所表示的二进制编码,10张纸片是1010,而7张纸片是0111。很容易看出,之所以有这样的效果,其实与二进制的权重有关。细心的读者可能会发现,实际上并不需要很费心去量尺寸,直接拿标准的A4或A3纸张反复对折,按折痕剪开得到的矩形,其比例正是1:1.414。
二进制牌
找六种不同颜色的“牌”,如红色、黄色、蓝色、绿色、白色、黑色,用现成的小块积木、多米诺骨牌或是用纸板涂上颜色都可以,记住以下规则:①每看到两个红色,则替换成一个黄色;②每看到一个黄色、一个白色,则替换成一个黄色、一个白色、一个蓝色;③每看到一个黄色、一个红色、一个白色,则替换成一个红色、一个白色、一个绿色;④每看到一个黄色,则替换成一个红色;⑤每看到一个黑色、一个红色、一个白色,则替换成一个绿色。
牌的初始状态,都是由一块黑色开始,然后放若干块红色,最后由一块白色结束。然后按规则中的顺序,从第①条替换规则依次做到第⑤条,结束后再重头开始。那么,这些规则究竟有什么用处呢?不妨用“黑红红红红红红白”的初始状态来试一下。第一步:每看到两个红色,则替换成一个黄色,则初始的状态变为“黑黄黄黄白”;第二步:每看到一个黄色、一个白色,则替换成黄、白、蓝,于是状态再变为“黑黄黄黄白蓝”;第三步:黄、红、白变成红、白、绿,由于先前的状态中找不到黄、红、白,于是跳过;第四步:每看到一个黄色,则变成一个红色,于是状态变为“黑红红红白蓝”;第五步:黑、红、白变成绿色,由于先前的状态中找不到黑、红、白,于是跳过;第六步:重新匹配第①条规则,两个红色变一个黄色,于是状态变为“黑黄红白蓝”;第七步:黄、白变成黄、白、蓝,由于先前的状态中找不到黄、白,于是跳过;第八步:黄、红、白变成红、白、绿,于是状态变为“黑红白绿蓝”;第九步:每看到一个黄色,则替换成一个红色,由于先前的状态中找不到黄色,于是跳过;第十步:黑、红、白变成绿色,于是状态变为“绿绿蓝”,由于再也没有可替换的可能了,于是替换就在这里停止。
若将绿看成数字“1”,而将蓝看成数字“0”,那么得到的结果就是110。到这里大家应该可以猜出来了,上述的替换过程,其实是将6张红色的牌,变为6的二进制数。同样的,如果初始状态是“黑红红红红红红红红红红白”,那么得到的结果是“绿蓝绿蓝”,即1010,大家可以自己试一下,即便手边没有任何可以用的材料,这个游戏在记事本中,用“替换—全部替换”的功能,也是可以实现的。大家可以思考一下,这套规则的原理究竟是什么?