程鐵良 常巧霞
(鄭州職業(yè)技術(shù)學(xué)院,鄭州 410121)
數(shù)制是人們利用符號進(jìn)行計數(shù)的科學(xué)方法。日常生活中,我們用到的大都是十進(jìn)制的數(shù)。其實數(shù)制有很多種,在計算機中,常要用到二進(jìn)制、八進(jìn)制、十六進(jìn)制的數(shù),所以計算機的許多基礎(chǔ)學(xué)科中都涉及到了進(jìn)制轉(zhuǎn)換的問題。在實際教學(xué)過程中,筆者發(fā)現(xiàn),好多學(xué)生不能正確、熟練地進(jìn)行進(jìn)制轉(zhuǎn)換,或?qū)M(jìn)制轉(zhuǎn)換的概念比較模糊。筆者根據(jù)多年的教學(xué)經(jīng)驗,就進(jìn)制轉(zhuǎn)換問題,提出一些思考或建議。
在許多教材中,關(guān)于進(jìn)制的轉(zhuǎn)換,一般是這樣的:
二進(jìn)制數(shù)、十六進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)的規(guī)律是相同的:把二進(jìn)制數(shù)(或十六進(jìn)制數(shù))按位權(quán)形式展開多項式和的形式,求其最后的和,就是其對應(yīng)的十進(jìn)制數(shù)——簡稱“按權(quán)求和”。例如:
(1)把(1001.01)2轉(zhuǎn)換為十進(jìn)制數(shù)
解:(1001.01)2
=1×23+0×22+0×21+1×20+0×2-1+1×2-2
=8+0+0+1+0.5+0.25
=9.75
(2)把(38A.11)16轉(zhuǎn)換為十進(jìn)制數(shù)
解:(38A.11)16
=3×162+8×161+10×160+1×16-1+1×16-2
=768+128+10+0.0625+0.0039
=906.0664
整數(shù)轉(zhuǎn)換。一個十進(jìn)制整數(shù)轉(zhuǎn)換為二進(jìn)制整數(shù)通常采用除二取余法,即用2連續(xù)除十進(jìn)制數(shù),直到商為0,逆序排列余數(shù)即可得到――簡稱除二取余法。
例:(1)將25轉(zhuǎn)換為二進(jìn)制數(shù)
解: 25÷2=12 余數(shù)1
12÷2=6 余數(shù)0
6÷2=3 余數(shù)0
3÷2=1 余數(shù)1
1÷2=0 余數(shù)1
所以25=(11001)2
由于4位二進(jìn)制數(shù)恰好有16個組合狀態(tài),即1位十六進(jìn)制數(shù)與4位二進(jìn)制數(shù)是一一對應(yīng)的。所以,十六進(jìn)制數(shù)與二進(jìn)制數(shù)的轉(zhuǎn)換是十分簡單的。
(1)十六進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù),只要將每一位十六進(jìn)制數(shù)用對應(yīng)的4位二進(jìn)制數(shù)替代即可,簡稱位分四位。
例:將(4AF8B)16轉(zhuǎn)換為二進(jìn)制數(shù)。
解: 4 A F 8 B
0100 1010 1111 1000 1011
所以(4AF8B)16=(1001010111110001011)2
(2)二進(jìn)制數(shù)轉(zhuǎn)換為十六進(jìn)制數(shù),分別向左,向右每四位一組,依次寫出每組4位二進(jìn)制數(shù)所對應(yīng)的十六進(jìn)制數(shù)――簡稱四位合一位。
例:將二進(jìn)制數(shù)(111010110)2轉(zhuǎn)換為十六進(jìn)制數(shù)
解: 0001 1101 0110
1 D 6
所以(111010110)2=1D6H
轉(zhuǎn)換時注意最后一組不足4位時必須加0補齊4位。
首先,要理解數(shù)制的概念。數(shù)制是用一組固定的符號和統(tǒng)一的規(guī)則來表示數(shù)值的方法。其基本術(shù)語有:數(shù)碼:數(shù)制中表示基本數(shù)值大小的不同數(shù)字符號?;鶖?shù):數(shù)制所使用數(shù)碼的個數(shù)。位權(quán):數(shù)制中某一位上的1所表示數(shù)值的大小。
對于十進(jìn)制來說,是以10為基數(shù),有10個數(shù)碼:0、1、2、3、4、5、6、7、8、9。小于10的是個位,從0~9,一位數(shù),然后是十位,從10到99,2位數(shù),依此類推百位、千位...對于二進(jìn)制、八進(jìn)制、十六進(jìn)制來說基數(shù)分別是2、8、16,它們的個位數(shù)不同,二進(jìn)制0~1是個位,八進(jìn)制0~7,十六進(jìn)制0~F(15),超過這些才能進(jìn)位到下一位。十進(jìn)制逢十進(jìn)一,八進(jìn)制逢八進(jìn)一,這樣八進(jìn)制里只能出現(xiàn)0~7,如果個位到8了,就會自動進(jìn)位,這樣第二位變成1,第一位的數(shù)都進(jìn)上去了,就變成0了,因此八進(jìn)制超過8的數(shù)用兩位表示。
對于任何一個數(shù)來說,都可以表示成加法的形式:
例如:256=2×100+5×10+6×1
這種方法叫按權(quán)展開,意思就是從高到低一級一級展開成加法的形式;對于一個八進(jìn)制的數(shù)來說也是這樣,只是在基數(shù)那兒有些區(qū)別,八進(jìn)制是1、8、64、…
例如:271=2×64+7×8+1×1
對于十六進(jìn)制來說,基數(shù)是1、16、256、4096…
例如:35=3×16+5×1
對于二進(jìn)制來說,基數(shù)是1、2、4、8、16…
例如:110=1×4+1×2+0×1
總結(jié)一下基數(shù),就是從0次方開始,然后一次方、二次方…相當(dāng)于個位、十位、百位…。
數(shù)制轉(zhuǎn)換相當(dāng)于把數(shù)重新排一下,一般情況下我們是用十進(jìn)制,對于一個數(shù)來說,個位表示幾個、十位表示幾十,百位表示幾百,這樣就很方便地知道一個數(shù)有多大。
例如255,我們知道這個數(shù)有二百、五十、五個,也就是右邊起,第一位是個位表示有幾個,這兒有五個;第二位是十位表示有幾十,這兒有五十;第三位是百位,表示有幾百,這兒有二百,總數(shù)共是255個。
對于八進(jìn)制來說,總數(shù)是255個的時候,寫成八進(jìn)制的數(shù)是377,分析一下是怎么回事: 從右邊開始,第一位是個位,這兒是7個。由于是八進(jìn)制,第二位就不是十位了,而是八了,這兒有7個八也就是五十六。同樣第三位也不是百位,而是六十四,這兒有3個六十四也就是一百九十二,總數(shù)仍然是255。
從這兒可以看出,總數(shù)相同的時候,表示成不同數(shù)制,數(shù)也不一樣,關(guān)鍵是每個數(shù)位上的基數(shù)不同,例如對于十進(jìn)制來說,第二位是十位,這個位置上的數(shù)一個頂十個,而對于八進(jìn)制的第二位,這個位置上的數(shù)一個只能頂八個。
數(shù)制轉(zhuǎn)換的時候只是把數(shù)按要求重新排列一下,比如轉(zhuǎn)成八進(jìn)制,就按八進(jìn)制的要求排列,二進(jìn)制就按二進(jìn)制的要求排列。
八進(jìn)制各個數(shù)位是:1、8、64、512…相當(dāng)于十進(jìn)制的個、十、百、千,按照8的n次方往后排;二進(jìn)制各個數(shù)位是:1、2、4、8、16…相當(dāng)于十進(jìn)制的個、十、百、千、萬,按照2的n次方往后排;十六進(jìn)制的分別是:1、16、256…
轉(zhuǎn)換的時候,必須要按照上面的要求來重新排列數(shù)字,基本方法是找出最近的一個數(shù)位,然后用除余法找出各個位置上的數(shù)。比如:
以255為例。離255最近的數(shù)是第三位64,用255除以64,得3余63,第三位上求出來是3;用余數(shù)63除以第二位8,得7余7,第二位上求出來是7;用余數(shù)7除以第一位1,得7余0,第一位上是7;所有的數(shù)都擺好了,結(jié)果是377。
以15為例。跟數(shù)位表對一下,最近的是8,除一下得1余7,第四位是1;用余數(shù)7除以4,得1余3,第三位是1;用余數(shù)3除以2,得1余1,第二位是1;用余數(shù)1除以1,得1余0,第一位是1;所有的數(shù)位都排好,結(jié)果是1111。
當(dāng)然,在實際操作中,兩種數(shù)制轉(zhuǎn)換方法不是截然分開的,而是相互結(jié)合、取長補短的。總之,學(xué)無定法,貴在動腦。只要勤動手,肯動腦,一切問題都可以迎刃而解。
[1]孟林.計算機文化基礎(chǔ)教程[M].成都:電子科技大學(xué)出版社,2004.
[2]北大數(shù)學(xué)力學(xué)系.高等代數(shù)[M].北京:高等教育出版社,2000.