陳凱

說到學(xué)習(xí)二進制,難免要和“基數(shù)”、“權(quán)重”這樣的抽象概念,或是和一堆枯燥的數(shù)字符號打交道,本文介紹兩款小游戲,希望學(xué)習(xí)者能夠在直觀、形象的互動中逐漸揭開二進制編碼的奧秘。
二進制拼圖
剪若干張矩形的紙片,紙片的寬度和長度的比例為1:1.414,暫且把這樣的形狀稱為A形拼板,然后在白紙上由大到小畫出幾個空白框(如圖1),不同大小的框的邊長比例也是1:1.414,最小的空白框的形狀與A形拼板一樣。游戲規(guī)則很簡單:任意取出一些A形拼板,嘗試將這些拼板填滿幾個空白框,注意填完后圖形要完整并且拼板不能有多余的。假設(shè)由大到小預(yù)先設(shè)置A、B、C、D共4個框,經(jīng)過實驗可發(fā)現(xiàn),如果有10塊拼板,則恰好可以填滿A和C(如圖2);如果是7塊拼板,則可以填滿B、C和D。
如果把所填滿的框標為1,把空白的框標為0,那么就可以看出,紙片的數(shù)量正好對應(yīng)由框所表示的二進制編碼,10張紙片是1010,而7張紙片是0111。很容易看出,之所以有這樣的效果,其實與二進制的權(quán)重有關(guān)。細心的讀者可能會發(fā)現(xiàn),實際上并不需要很費心去量尺寸,直接拿標準的A4或A3紙張反復(fù)對折,按折痕剪開得到的矩形,其比例正是1:1.414。
二進制牌
找六種不同顏色的“牌”,如紅色、黃色、藍色、綠色、白色、黑色,用現(xiàn)成的小塊積木、多米諾骨牌或是用紙板涂上顏色都可以,記住以下規(guī)則:①每看到兩個紅色,則替換成一個黃色;②每看到一個黃色、一個白色,則替換成一個黃色、一個白色、一個藍色;③每看到一個黃色、一個紅色、一個白色,則替換成一個紅色、一個白色、一個綠色;④每看到一個黃色,則替換成一個紅色;⑤每看到一個黑色、一個紅色、一個白色,則替換成一個綠色。
牌的初始狀態(tài),都是由一塊黑色開始,然后放若干塊紅色,最后由一塊白色結(jié)束。然后按規(guī)則中的順序,從第①條替換規(guī)則依次做到第⑤條,結(jié)束后再重頭開始。那么,這些規(guī)則究竟有什么用處呢?不妨用“黑紅紅紅紅紅紅白”的初始狀態(tài)來試一下。第一步:每看到兩個紅色,則替換成一個黃色,則初始的狀態(tài)變?yōu)椤昂邳S黃黃白”;第二步:每看到一個黃色、一個白色,則替換成黃、白、藍,于是狀態(tài)再變?yōu)椤昂邳S黃黃白藍”;第三步:黃、紅、白變成紅、白、綠,由于先前的狀態(tài)中找不到黃、紅、白,于是跳過;第四步:每看到一個黃色,則變成一個紅色,于是狀態(tài)變?yōu)椤昂诩t紅紅白藍”;第五步:黑、紅、白變成綠色,由于先前的狀態(tài)中找不到黑、紅、白,于是跳過;第六步:重新匹配第①條規(guī)則,兩個紅色變一個黃色,于是狀態(tài)變?yōu)椤昂邳S紅白藍”;第七步:黃、白變成黃、白、藍,由于先前的狀態(tài)中找不到黃、白,于是跳過;第八步:黃、紅、白變成紅、白、綠,于是狀態(tài)變?yōu)椤昂诩t白綠藍”;第九步:每看到一個黃色,則替換成一個紅色,由于先前的狀態(tài)中找不到黃色,于是跳過;第十步:黑、紅、白變成綠色,于是狀態(tài)變?yōu)椤熬G綠藍”,由于再也沒有可替換的可能了,于是替換就在這里停止。
若將綠看成數(shù)字“1”,而將藍看成數(shù)字“0”,那么得到的結(jié)果就是110。到這里大家應(yīng)該可以猜出來了,上述的替換過程,其實是將6張紅色的牌,變?yōu)?的二進制數(shù)。同樣的,如果初始狀態(tài)是“黑紅紅紅紅紅紅紅紅紅紅白”,那么得到的結(jié)果是“綠藍綠藍”,即1010,大家可以自己試一下,即便手邊沒有任何可以用的材料,這個游戲在記事本中,用“替換—全部替換”的功能,也是可以實現(xiàn)的。大家可以思考一下,這套規(guī)則的原理究竟是什么?