李紀(jì)
(太原廣播電視中專,山西 太原 030001)
數(shù)制間的轉(zhuǎn)換技巧
李紀(jì)
(太原廣播電視中專,山西 太原 030001)
計(jì)算機(jī)原理是中等職業(yè)學(xué)校計(jì)算機(jī)專業(yè)的一門(mén)主干專業(yè)課程,數(shù)制轉(zhuǎn)換是其中的基礎(chǔ)知識(shí)。我們?nèi)粘I钪惺褂玫氖鞘M(jìn)制,而計(jì)算機(jī)中是用二進(jìn)制來(lái)表示數(shù)據(jù)的,這就需要進(jìn)行數(shù)制間的轉(zhuǎn)換,但用常規(guī)方法計(jì)算量較大,本文介紹通過(guò)在教學(xué)中總結(jié)的一些轉(zhuǎn)換技巧,從而提高效率和準(zhǔn)確性。
數(shù)制;轉(zhuǎn)換;十進(jìn)制;二進(jìn)制
計(jì)算機(jī)原理是中等職業(yè)學(xué)校計(jì)算機(jī)及應(yīng)用專業(yè)的一門(mén)主干專業(yè)課程,其中數(shù)據(jù)在計(jì)算機(jī)中的表示這一章中要求學(xué)生能夠熟練掌握各數(shù)制間的轉(zhuǎn)換,為以后掌握必要的軟硬件知識(shí),掌握微型計(jì)算機(jī)組成結(jié)構(gòu)和各部件的工作原理,了解指令系統(tǒng)和匯編語(yǔ)言知識(shí)及程序設(shè)計(jì)的基本概念奠定基礎(chǔ)。另外,它也是中等職業(yè)學(xué)生對(duì)口升學(xué)考試中的基礎(chǔ)知識(shí)點(diǎn)。
數(shù)制是用一組固定的數(shù)字和一套統(tǒng)一的規(guī)則來(lái)表示數(shù)目的方法。在計(jì)算機(jī)中,常用的數(shù)制有十進(jìn)制、二進(jìn)制、八進(jìn)制和十六進(jìn)制。
十進(jìn)制數(shù)是人們十分熟悉的計(jì)數(shù)方式,它是用0~9十個(gè)數(shù)字符號(hào),按一定規(guī)律排列起來(lái),表示值的大小,按照“逢十進(jìn)一”的原則計(jì)數(shù)。例如,6336這個(gè)四位數(shù)可寫(xiě)成:6336=6×103+3×102+3×101+6×100,從這個(gè)表達(dá)式中可發(fā)現(xiàn)以下特點(diǎn):(1)十進(jìn)制的基數(shù)為10,即允許選用基本數(shù)碼的個(gè)數(shù),只有0~9這10個(gè)數(shù)字符號(hào)。
(2)同一數(shù)字符號(hào)在不同位置代表的數(shù)值是不同的。右邊第一位為個(gè)位,記作100;第二位為十位,記作101;第三和第四位依此類推。通常將103、102、101、100稱為對(duì)應(yīng)數(shù)位的權(quán),各位數(shù)的權(quán)都是基數(shù)的冪。每個(gè)數(shù)位對(duì)應(yīng)的數(shù)字符號(hào)稱為系數(shù),所以某數(shù)位的數(shù)值等于該位的系數(shù)和該位權(quán)的乘積。如6336這個(gè)數(shù)中雖然有兩個(gè)6,但一個(gè)代表6000,一個(gè)代表6;3也是如此。(3)從右向左采用逢十進(jìn)位。
從上邊對(duì)十進(jìn)制數(shù)的分析,得到二進(jìn)制數(shù)的基數(shù)為2即0和1兩個(gè)數(shù)字符號(hào);各位的權(quán)為2的冪;從右到左,采用“逢二進(jìn)一”的原則。
同樣的道理:八進(jìn)制的基數(shù)為8,即0~7八個(gè)數(shù)字符號(hào);各位的權(quán)為8的冪;從右到左,采用“逢八進(jìn)一”的原則。十六進(jìn)制的基數(shù)為16,即0~9、A、B、C、D、E、F16個(gè)數(shù)字符號(hào);各位的權(quán)為16的冪;從右到左,采用
“逢十六進(jìn)一”的原則。
在計(jì)算機(jī)中,通常用數(shù)字后面跟一個(gè)英文字母來(lái)表示該數(shù)的進(jìn)制。其中,“D”表示該數(shù)為十進(jìn)制數(shù)(Decimal number),有時(shí)可以省略;“B”表示該數(shù)為二進(jìn)制數(shù)(Binarynumber);“Q”表示八進(jìn)制數(shù)(Octal number);“H”表示十六進(jìn)制數(shù)(Hexadecimal number)。
二進(jìn)制:1101111B=1×26+1×25+0×24+1×23+1× 22+1×21+1×20=64+32+8+4+2+1=111即二進(jìn)制數(shù)1101111轉(zhuǎn)換成十進(jìn)制數(shù)為111
八進(jìn)制:213Q=2×82+1×81+3×80=139
十六進(jìn):2FAH=2×162+15×161+10×160=762
這種方法計(jì)算量很大,比較容易出錯(cuò),而且浪費(fèi)時(shí)間??荚噷?duì)時(shí)間和準(zhǔn)確性要求非常高,而且不能使用任何有關(guān)的電子設(shè)備或是計(jì)算類工具,通過(guò)長(zhǎng)期的思考和總結(jié),對(duì)于有些特殊的值,我們可以使用一些簡(jiǎn)便方法,提高效率。另外,因?yàn)?和16,都是2的整次冪,所以二進(jìn)制正整數(shù)與八進(jìn)制和十六進(jìn)制正整數(shù)的相互轉(zhuǎn)換又比較容易。這樣一來(lái),十進(jìn)制數(shù)和二進(jìn)制數(shù)相互轉(zhuǎn)換的技巧就至關(guān)重要了。
由于二進(jìn)制數(shù)的特殊性,要不是加上所在位的權(quán)值,要不就是0,所以權(quán)值的規(guī)律就很重要。它們分別是1、2、4、8……構(gòu)成的是等比數(shù)列。根據(jù)等比數(shù)列的求和公式Sn=a1(1-qn)/(1-q),第一項(xiàng)a1=1,公比q=2,求得二進(jìn)制中特有的求和公式,這個(gè)公式就是當(dāng)二進(jìn)制數(shù)碼全部為1情況下的累積權(quán)值,也就是二進(jìn)制數(shù)轉(zhuǎn)換成的十進(jìn)制數(shù)。例如:11111111B=28-1=255,即先數(shù)清總的二進(jìn)制位數(shù),此題為8,n=8,代入公式就可立即求出結(jié)果,比普通算法既省時(shí)又不易出錯(cuò)。
對(duì)于二進(jìn)制數(shù)中有個(gè)別0的情況,用累計(jì)權(quán)值減去0位上的權(quán)值即可,這樣就得到公式:Sn=(2n-1)-2a-2b……(注:Sn為十進(jìn)制數(shù),n為總的二進(jìn)制位數(shù),a、b等為0位上相應(yīng)的位序),例如:1111110B=(27-1) -20=128-1-1=126,當(dāng)然在0絕對(duì)多的情況下,采用這種方法就比較麻煩,可以用普通按權(quán)展開(kāi)相加法。
對(duì)于像第一個(gè)數(shù)為1,其余都為0的二進(jìn)制數(shù),也有簡(jiǎn)單方法可尋。如:10000000B=27=128,即為2n(注:n為0的個(gè)數(shù))。
十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù),通常使用的是除2取余法,這種方法如果數(shù)比較大的話,我們畫(huà)連除圖有點(diǎn)浪費(fèi)時(shí)間且容易出錯(cuò),現(xiàn)在我們嘗試換一種思路,從權(quán)值出發(fā),找到相應(yīng)的位權(quán),逐步推導(dǎo),將十進(jìn)制數(shù)快速轉(zhuǎn)換成二進(jìn)制數(shù)。
因?yàn)槎M(jìn)制數(shù)是由數(shù)碼與位權(quán)的值相乘后累積的和,又因?yàn)槿魏螖?shù)與0相乘的積都為0,所以我們把二進(jìn)制數(shù)轉(zhuǎn)換十進(jìn)制數(shù)時(shí),只要把1位上的權(quán)值相加即可。反之,在十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)時(shí),我們可以逆向思維,首先找到等于或小于且最接近該十進(jìn)制數(shù)的權(quán)值,確定數(shù)碼為1的最高位數(shù);然后把十進(jìn)制數(shù)與確定的最高位的權(quán)值相減,得到差值,再找到與差值相等或比差值小且與之最接近的權(quán)值,確定第二個(gè)數(shù)碼為1的位數(shù),依次類推,直到差值為0,最后在空位填上0,注意不要丟掉第0位,另外,這種方法需要熟記2的0~10次冪數(shù)值。
例如,我們將12轉(zhuǎn)換成二進(jìn)制數(shù),首先找到與12相等或小于12且與12最接近的權(quán)值,我們可以確定是8=23,又因?yàn)?2-8=4,我們?cè)僬业脚c4相等或比4且小接近4的權(quán)值,即為4=22,這時(shí)我們可以寫(xiě)為12=8+4=23+22=1100B,即在第3位寫(xiě)1,第2位寫(xiě)1,第1位寫(xiě)0,第0位寫(xiě)0,一定別忘記第0位,我們可以看出二進(jìn)制數(shù)的位數(shù)是最高位次冪加1,如上例中最高次冪為3,二進(jìn)制數(shù)位數(shù)為4。這種方法漸漸熟悉后就會(huì)很快求得結(jié)果。
同樣道理的逆向思維,對(duì)于一些特殊的十進(jìn)制數(shù),也可反過(guò)來(lái)用二進(jìn)制數(shù)轉(zhuǎn)十進(jìn)制數(shù)的方法。如8=23=1000B,16=24=10000B,32=25=100000B,它們的制數(shù)為1后加n個(gè)0。再如規(guī)律是十進(jìn)制數(shù)為2的n(n為正整數(shù))次冪轉(zhuǎn)換為二進(jìn)7=23-1=111B,15=24-1=1111,31=25-1=11111,它們的規(guī)律是十進(jìn)制數(shù)為2的n(n為正整數(shù))次冪減1轉(zhuǎn)換為二進(jìn)制數(shù)為n個(gè)1。
有了二進(jìn)制數(shù)和十進(jìn)制數(shù)的技巧,八進(jìn)制和十六進(jìn)制數(shù)就可借助于二進(jìn)制數(shù)這個(gè)橋梁輕松和十進(jìn)制數(shù)進(jìn)行互換了。
[1]宮靜洲.巧換二進(jìn)制與十進(jìn)制[J].中國(guó)信息技術(shù)教育,2009,(5):27-28.
[4]武馬群主編.計(jì)算機(jī)原理[M].北京:高等教育出版社,2002.
[3]李立東,朱曉鷗.微機(jī)原理與匯編語(yǔ)言基礎(chǔ)[M].北京:高等教育出版社,2002.
O1
A
1673-0046(2010)5-0169-02