計(jì)算機(jī)中常用幾種不同的進(jìn)位數(shù)制,包括二(八、十六)進(jìn)制和十進(jìn)制。二進(jìn)制數(shù)據(jù)更容易用邏輯線路處理,更接近計(jì)算機(jī)硬件能直接識(shí)別和處理的電子化信息的使用要求,而使用計(jì)算機(jī)的人更容易接受十進(jìn)制的數(shù)據(jù)類型。二者之間的進(jìn)制轉(zhuǎn)換是經(jīng)常遇到的問(wèn)題,應(yīng)熟練掌握。
(1)二 (八、十六) 進(jìn)制 十進(jìn)制數(shù)據(jù)轉(zhuǎn)換
公式 (2.3) 確定的運(yùn)算規(guī)則,是不同進(jìn)位計(jì)數(shù)制數(shù)據(jù)之間完成進(jìn)位制轉(zhuǎn)換的依據(jù)。
十進(jìn)制到二進(jìn)制的轉(zhuǎn)換,通常要區(qū)分?jǐn)?shù)的整數(shù)部分和小數(shù)部分,并分別按除2取余數(shù)部分和乘2取整數(shù)部分兩種不同的方法來(lái)完成。
對(duì)整數(shù)部分,要用除2取余數(shù)辦法完成十→二的進(jìn)制轉(zhuǎn)換,其規(guī)則是:
用2除十進(jìn)制數(shù)的整數(shù)部分,取其余數(shù)為轉(zhuǎn)換后的二進(jìn)制數(shù)整數(shù)部分的低位數(shù)字;
再用2去除所得的商,取其余數(shù)為轉(zhuǎn)換后的二進(jìn)制數(shù)高一位的數(shù)字;
重復(fù)執(zhí)行第二步的操作,直到商為0,結(jié)束轉(zhuǎn)換過(guò)程。
例如, 將10進(jìn)制的37轉(zhuǎn)換成二進(jìn)制整數(shù)的過(guò)程如下:
余數(shù)部分,即轉(zhuǎn)換后的結(jié)果,為(100101) 2。
對(duì)小數(shù)部分,要用乘2取整數(shù)辦法完成十→二的進(jìn)制轉(zhuǎn)換,其規(guī)則是:
用2乘十進(jìn)制數(shù)的小數(shù)部分,取乘積的整數(shù)為轉(zhuǎn)換后的二進(jìn)制數(shù)的最高位數(shù)字;
再用2乘上一步乘積的小數(shù)部分,取新乘積的整數(shù)為轉(zhuǎn)換后二進(jìn)制小數(shù)低一位數(shù)字;
重復(fù)第二步操作,直至乘積部分為0,或已得到的小數(shù)位數(shù)滿足要求,結(jié)束轉(zhuǎn)換過(guò)程。
例如,將十進(jìn)制的0.43,轉(zhuǎn)換成二進(jìn)制小數(shù)的過(guò)程如下(假設(shè)要求小數(shù)點(diǎn)后取5位):
整數(shù)部分,即轉(zhuǎn)換后的二進(jìn)制小數(shù)為(0.01101)2。
對(duì)小數(shù)進(jìn)行轉(zhuǎn)換的過(guò)程中,轉(zhuǎn)換后的二進(jìn)制已達(dá)到要求位數(shù),而最后一次的乘積的小數(shù)部分不為0,會(huì)使轉(zhuǎn)換結(jié)果存在誤差,其誤差值小于求得的最低一位的位權(quán)。
對(duì)既有整數(shù)部分又有小數(shù)部分的十進(jìn)制數(shù), 可以先轉(zhuǎn)換其整數(shù)部分為二進(jìn)制數(shù)的整數(shù)部分,再轉(zhuǎn)換其小數(shù)部分為二進(jìn)制的小數(shù)部分,通過(guò)把得到的兩部分結(jié)果合并起來(lái)得到轉(zhuǎn)換后的最終結(jié)果。例如,(37.43)10 = (100101.01101)2 。
在實(shí)現(xiàn)手工轉(zhuǎn)換時(shí),如果對(duì)二進(jìn)制數(shù)已經(jīng)比較熟悉,基本上記住了以2為底的指數(shù)值,即二進(jìn)制數(shù)每一位上的權(quán),對(duì)十進(jìn)制數(shù)進(jìn)行轉(zhuǎn)換時(shí),也可以不采用上述規(guī)則,基本上可以直接寫出來(lái)。例如,
(45.625)10=32+8+4+1+0.5+0.125=(10 1 1 01. 10 1) 2,即(101101.101)2。
(1105)10 = 1024+81 = 1024+ 64+16 + 1= (1000 10 10001) 2,即(10001010001)2。
參照上述方法,也可以實(shí)現(xiàn)十→八進(jìn)制, 十→十六進(jìn)制的轉(zhuǎn)換過(guò)程。例如,
結(jié)果:(1109)10 =(2125)8
結(jié)果:(0.385)10 =(0.305)8
完成 十→十六 進(jìn)制數(shù)的轉(zhuǎn)換方法與前述方法類似,只是乘除16時(shí),手工運(yùn)算不大方便。
(2) 二 八 及 二 十六的進(jìn)制轉(zhuǎn)換
用二進(jìn)制表示一個(gè)數(shù)值N,所用的位數(shù)K為log2N,如表示4096, K為13,寫起來(lái)位串較長(zhǎng)。為此,計(jì)算機(jī)中也常常采用八進(jìn)制和十六進(jìn)制來(lái)表示數(shù)值數(shù)據(jù),為表示數(shù)值N,分別有如下對(duì)應(yīng)關(guān)系:
m-1
N = ∑ Di * 8i (2.5) Di 的取值為0到7
i = -k
例如 (7.44)8 = 7*80 + 4*8-1 + 4*8-2 = (7.5625)10 。
m-1
N = ∑ Di * 16i (2.6) Di 的取值為0到9和A到F
i = -k
例如 (1A.08) 16 = 1*161 + 10*160 + 8*16-2 = (26.03125)10 。
上述二式中所用符號(hào)的意義與公式(2.3)中所用符號(hào)的意義類同,但此處Di包含的基本符號(hào)分別限于0-7和0-9、A-F,各位的碼權(quán)分別為8i和16i
把用二進(jìn)制、八進(jìn)制、十六進(jìn)制表示的數(shù)轉(zhuǎn)換成10進(jìn)制數(shù)的值, 使人能更容易地衡量這個(gè)數(shù)值的大小。
二進(jìn)制數(shù)與八進(jìn)制、十六進(jìn)制數(shù)的關(guān)系
由于log28=3, log216=4, 即一位8進(jìn)制的數(shù)可以用3位二進(jìn)制的數(shù)重編碼來(lái)得到, 一位16進(jìn)制的數(shù)可以用4位二進(jìn)制的數(shù)重編碼得到, 故人們通常認(rèn)為, 在計(jì)算機(jī)這個(gè)領(lǐng)域內(nèi), 8進(jìn)制和16進(jìn)制數(shù), 只是二進(jìn)制數(shù)的一種特定的表示形式。表2.1給出少量二、八、十六和十進(jìn)制數(shù)的對(duì)應(yīng)關(guān)系:
表2.1 二、八、十六和十進(jìn)制的對(duì)應(yīng)關(guān)系
二進(jìn)制數(shù) |
八進(jìn)制數(shù) |
十六進(jìn)制數(shù) |
十進(jìn)制數(shù)的值 |
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 |
00 01 02 03 04 05 06 07 10 11 12 13 14 15 16 17 |
0 1 2 3 4 5 6 7 8 9 A B C D E F |
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
在把二進(jìn)制數(shù)轉(zhuǎn)換成八進(jìn)制或十六進(jìn)制表示時(shí),應(yīng)從小數(shù)點(diǎn)所在位置分別向左、向右對(duì)每三位或每四位二進(jìn)制位進(jìn)行分組,寫出每一組所對(duì)應(yīng)的一位八或十六進(jìn)制數(shù)。若小數(shù)點(diǎn)左側(cè)(即整數(shù)部分)的位數(shù)不是3或4的整數(shù)倍,可以按在數(shù)的最左側(cè)補(bǔ)零的方法理解;對(duì)小數(shù)點(diǎn)右側(cè)(即小數(shù)部分),應(yīng)按在數(shù)的最右側(cè)補(bǔ)零的方法處理,否則容易轉(zhuǎn)換錯(cuò)。對(duì)不存在小數(shù)部分的二進(jìn)制數(shù)(整數(shù)),應(yīng)從最低位開(kāi)始向左把每3位劃分成一組,使其對(duì)應(yīng)一個(gè)八進(jìn)制位,或把每4位劃分成一組,使其對(duì)應(yīng)一個(gè)十六進(jìn)制位,例如:
(10.101) 2 變成八進(jìn)制時(shí),應(yīng)把它理解為(010.101)2,是(2.5)8 , 即八進(jìn)制的2.5。當(dāng)把它轉(zhuǎn)換為十六進(jìn)制時(shí),應(yīng)首先變?yōu)?0010.1010)2,是(2.A) 16,即十六進(jìn)制的2.A,而不是(2.5)16。又如,
(1100111.10101101) 2 = (147.532) 8
(1100111.10101101) 2 = (67.AD)16
八和十六進(jìn)制之間的轉(zhuǎn)換不怎么常用,經(jīng)過(guò)二進(jìn)制的中間結(jié)果進(jìn)行轉(zhuǎn)換是方便的。
評(píng)論
查看更多