陳朝暉



● 問題啟發(fā):馮·諾依曼為何選擇二進(jìn)制
1.信息表達(dá)
計(jì)算機(jī)是機(jī)器,在當(dāng)時背景下,用機(jī)器表達(dá)信息的局限性決定了使用二進(jìn)制更加方便。書本從電流、電壓等方面做了解釋(如電位中高電位為1,低電位為0;線路中線路開通為1,閉合為0等)。
2.運(yùn)算處理
計(jì)算機(jī)(ENIAC)研發(fā)的初衷是計(jì)算,機(jī)器在做計(jì)算時選擇不同進(jìn)制,將直接導(dǎo)致運(yùn)算難度差異。下面我們通過比較1位數(shù)值A(chǔ)和數(shù)值B做加法運(yùn)算,在實(shí)現(xiàn)上需考慮的情形。
(1)簡單的二進(jìn)制相加
表1 ? ?二進(jìn)制相加表
從表1我們可以看出:二進(jìn)制數(shù)值A(chǔ)和數(shù)值B做A+B運(yùn)算,需考慮的情形僅有4種。結(jié)合當(dāng)時條件,毫無疑問用二進(jìn)制處理數(shù)據(jù)在機(jī)器實(shí)現(xiàn)上相對簡單。
(2)較復(fù)雜的十進(jìn)制相加
如果使用我們熟悉的十進(jìn)制(如表2),做A+B運(yùn)算需考慮的情形總共有100種,機(jī)器實(shí)現(xiàn)難度可想而知。從中我們可以看出馮·諾依曼選擇二進(jìn)制系統(tǒng),在當(dāng)時背景條件下毫無疑問是極其明智的。
表2 ? ? ?十進(jìn)制相加表
● 科學(xué)探究:百花齊放的不同進(jìn)制
用心去慢慢品味,你會發(fā)現(xiàn)我們生活中存在多種進(jìn)制類型:①星期(星期一、星期二、……、星期七,七進(jìn)制);②月份(一月、二月、……、十二月,十二進(jìn)制);③時間(1點(diǎn)、2點(diǎn)、……、24點(diǎn),二十四進(jìn)制)。書本中還提到八進(jìn)制、十六進(jìn)制。不同進(jìn)制運(yùn)用于不同場合,為我們生活帶來諸多便利。請學(xué)生結(jié)合生活中不同進(jìn)制,并對其做深入探究。
1.基數(shù)的探究
基數(shù),即基本數(shù)字,在不同進(jìn)制中,常指數(shù)據(jù)在某一位置上允許出現(xiàn)的數(shù)字個數(shù)。下面,我們列舉幾種不同進(jìn)制類型,對其基數(shù)進(jìn)行比較。
表3 ?不同進(jìn)制類型的基數(shù)比較表
進(jìn)制類型 基本數(shù)字 基數(shù)
十進(jìn)制 0、1、2、3、4、5、6、7、8、9 10
七進(jìn)制 0、1、2、3、4、5、6 7
二進(jìn)制 0、1 2
2.十六進(jìn)制中為何有字母
按表3理解,十六進(jìn)制基本數(shù)字應(yīng)為0、1、……、15。這樣似乎很合理,但禁不住推敲。例如,數(shù)字10是代表某個具體位置,還是分別代表兩個位置上的數(shù)字(一個位置為1,另一個位置為0)?很明顯,如果十六進(jìn)制基數(shù)這樣表述,極易引發(fā)位置上的錯位、混淆。
怎樣解決這個問題?我們可以創(chuàng)建新符號來替代那些易引發(fā)混淆的雙位數(shù)值(如畫一個三角形符號代表數(shù)字10),用新符號來替代雙位數(shù)值問題就解決了。人們常常將十六進(jìn)制基本數(shù)字表達(dá)成0、1、……、9、A、B、……、F(如雙位數(shù)值10用大寫字母A表示),這種表述簡單方便,易達(dá)成共識。
3.七進(jìn)制的困惑(奇妙的0)
前面我們提到星期是七進(jìn)制,它的基數(shù)是1、2、……、7。如果做七進(jìn)制運(yùn)算或許你會感到困惑:7+1=( ),3+4=( ),七進(jìn)制逢7不進(jìn)位,這讓人難以接受,所以將七進(jìn)制基數(shù)定為0、1、……、6將更加合理。
● 科學(xué)探究:“位置標(biāo)記”是進(jìn)制的核心
要探究不同進(jìn)制本質(zhì),我們先來分析熟悉的十進(jìn)制,并挖掘其中蘊(yùn)含的規(guī)律——位置標(biāo)記。
(表中第1行是“位置標(biāo)記”,第2行是對應(yīng)位置下的數(shù)值)
(52154.23)10=5*104+2*103+1*102+
5*101+4*100+2*10-1+3*10-2……①
1.“位置標(biāo)記”的便利
在每一個數(shù)字上方標(biāo)記出對應(yīng)位置,這就是“位置標(biāo)記”。表4(52154.23)10中有兩個數(shù)字5,“位置標(biāo)記”描述了數(shù)字5的差異,在位置4下方數(shù)字5=5*104,而在位置1下方數(shù)字5=5*101。
在進(jìn)制系統(tǒng)中,“位置標(biāo)記”是人類數(shù)值表達(dá)上的一大進(jìn)步。筆者認(rèn)為,其他進(jìn)制也采用了“位置標(biāo)記”法,這是進(jìn)制系統(tǒng)的核心,也是不同進(jìn)制彼此相通之處,是我們掌握進(jìn)制換算的關(guān)鍵密鑰。
2.統(tǒng)一進(jìn)制,比較大小
(52154.23)8 (1001110.01)2 (5E1.A3)16
要讓不同進(jìn)制進(jìn)行大小比較,我們必須統(tǒng)一進(jìn)制。在表4①處,我們利用“位置標(biāo)記”將(52154.23)10逐位展開。同樣通過這種方式,我們可以將八進(jìn)制轉(zhuǎn)換成十進(jìn)制:
(52154.23)8=5*84+2*83+1*82+5*81
+4*80+2*8-1+3*8-2=( ?)10
現(xiàn)在要將任意R進(jìn)制轉(zhuǎn)換成十進(jìn)制,只需要調(diào)整基數(shù)R即可。為什么轉(zhuǎn)換之后得到的就是十進(jìn)制數(shù)?這是因?yàn)樵凇拔恢脴?biāo)記”法等式右端,我們的計(jì)算處理采用了十進(jìn)制累加形式,因此不同進(jìn)制數(shù)據(jù)都將換算成十進(jìn)制。
3.4位二進(jìn)制等同1位十六進(jìn)制
在課堂教學(xué)中,許多教師都會提到,每4位二進(jìn)制等同1位十六進(jìn)制及“8421”法則。“知其然,更要知其所以然”,下面我們來揭開其神秘面紗。
請觀察②展開式中的基數(shù)變化,你會發(fā)現(xiàn)二進(jìn)制已轉(zhuǎn)換成十六進(jìn)制。
4.“8421”法則的由來
將②括號中的每組數(shù)據(jù)寫成通式為:(x*23+x*22+x*21+x*20)=(x*8+x*4+x*2+x*1)(x值為0或1),4位二進(jìn)制剛好對應(yīng)1位十六進(jìn)制數(shù),這就是“8421”法則的由來。
如果二進(jìn)制數(shù)據(jù)帶有小數(shù)部分,則從小數(shù)點(diǎn)位置開始,整數(shù)部分向左,小數(shù)部分向右,每4位為一組用1位十六進(jìn)制數(shù)表示,不足4位用“0”補(bǔ)足4位,這樣就得到1位十六進(jìn)制數(shù)的二進(jìn)制形態(tài)。
為什么打點(diǎn)分組?因?yàn)樾?shù)部分無論如何轉(zhuǎn)換,都不可能變成整數(shù)部分。將“8421”法則直接運(yùn)用到計(jì)算中更加方便。我們將x值為“1”和“8421”對應(yīng)數(shù)字累加,最后結(jié)果寫成對應(yīng)的十六進(jìn)制形態(tài)即可。另外,十六進(jìn)制轉(zhuǎn)換成二進(jìn)制是其逆運(yùn)算過程,八進(jìn)制與二進(jìn)制轉(zhuǎn)換與此類似。
● 問題啟發(fā):任意進(jìn)制的衍生
前面,我們可以將任意進(jìn)制統(tǒng)一成十進(jìn)制并比較大小。相反,如果給定十進(jìn)制數(shù)據(jù),我們怎樣得到其他進(jìn)制?我們先來回顧任意R進(jìn)制“位置標(biāo)記”法。
(52719)R=5*R4+2*R3+7*R2+1*R1
+9*R0……③
1.用余數(shù)構(gòu)造基數(shù)
不同進(jìn)制的不同主要是基數(shù)不同(八進(jìn)制有8個基本數(shù)字:0、1、……、7)。現(xiàn)在我們來考慮十進(jìn)制整數(shù)除以R可能產(chǎn)生哪些余數(shù)?
除以2的余數(shù)為:{0、1}
除以8的余數(shù)為:{0、1、……、7}
當(dāng)一個整數(shù)除以R時,其余數(shù){0、1、……、R-1}恰好構(gòu)成R進(jìn)制的基本數(shù)字。
2.十進(jìn)制轉(zhuǎn)換成任意R進(jìn)制
觀察上面展開式③,你會發(fā)現(xiàn)其逆運(yùn)算過程就是得到任意R進(jìn)制的方法。
“將十進(jìn)制的整數(shù)部分除以R,得到一個商和余數(shù);再將這個商除以R,又得到一個商和余數(shù);反復(fù)執(zhí)行這個過程,直到商為0結(jié)束”,這就是“除以R取余”法。
3.除法為何倒立書寫
倒立書寫是為了使除法運(yùn)算不斷重復(fù)下去,在相除過程中,被除數(shù)在不斷變小,直至為0。倒立書寫為下一次除法預(yù)留了書寫空間。另外,從直觀上考慮,我們不妨將每次相除后得到的余數(shù)直接寫在商旁邊(如圖1)。
很明顯,現(xiàn)在得到的這組余數(shù)就是R進(jìn)制數(shù)據(jù)。接下來是排列問題,這組余數(shù)是從上往下排列嗎?
(1)列反例加以證實(shí)
圖1中(54)10=(110110)2,當(dāng)被除數(shù)剛好整除時,余數(shù)為0,但0是不可以當(dāng)高位的,這說明書寫順序不可以從上往下。
(2)用十進(jìn)制檢驗(yàn)
進(jìn)制數(shù)據(jù)處理彼此相通。當(dāng)遇到困惑時,不妨回歸到我們熟悉的十進(jìn)制,或許馬上就能有答案,如圖2。
總之,《二進(jìn)制與編碼》在教學(xué)中極易被教師忽視。教師通過問題啟發(fā)課堂思維,探究提升信息素養(yǎng)的方法,不僅能使課堂趣味橫生,也在無形中提升了學(xué)生的信息素養(yǎng)。