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