數(shù)制是指數(shù)的制式,是人們利用符號計(jì)數(shù)的一種科學(xué)方法。
一、計(jì)算機(jī)中的各種數(shù)制
在計(jì)算機(jī)中常用的數(shù)制有十進(jìn)制、二進(jìn)制、八進(jìn)制和十六進(jìn)制等。
1. 十進(jìn)制
十進(jìn)制是我們經(jīng)常用到的進(jìn)位數(shù)制,它包括:0、1、2、3、4、5、6、7、8、9共十個(gè)數(shù)字符號。這十個(gè)數(shù)字符號又稱為“數(shù)碼”,每個(gè)數(shù)碼在數(shù)中最多可有兩個(gè)值的概念,一個(gè)是數(shù)字符號的數(shù)值,另一個(gè)是該數(shù)字符號的權(quán)。
舉個(gè)例子,例如:十進(jìn)制數(shù)34中的數(shù)碼3,其本身的值為3,它的權(quán)為10^1,所以它實(shí)際代表的值是30。在數(shù)學(xué)上,數(shù)制中數(shù)碼的個(gè)數(shù)定義為基數(shù),故十進(jìn)制的基數(shù)為10。
任何一個(gè)十進(jìn)制數(shù)都可以展開成冪級數(shù)形式,例如:
423.76 = 4*10^2 + 2*10^1 + 3*10^0 + 7*10^-1 + 6*10^-2
2. 二進(jìn)制
二進(jìn)制總共有0和1兩個(gè)數(shù)碼,任何二進(jìn)制數(shù)都由這兩個(gè)數(shù)碼組成。
二進(jìn)制數(shù)的基數(shù)為2,做加法時(shí),遵循逢2進(jìn)1的進(jìn)位原則。
二進(jìn)制展開成冪級數(shù)形式,如下所示:
10110.11 = 1*2^4 + 0*2^3 + 1*2^2 + 1*2^1 + 0*2^0 + 1*2^-1 + 1* 2^-2
其中,指數(shù)2^4、2^3、2^2、2^1、2^0、2^-1、2^-2為權(quán),2為基數(shù),其余和十進(jìn)制時(shí)相同。
3. 十六進(jìn)制
十六進(jìn)制有0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F共16個(gè)數(shù)碼,任何一個(gè)十六進(jìn)制數(shù)都是由其中的一些或全部數(shù)碼構(gòu)成。
十六進(jìn)制數(shù)的基數(shù)為16,進(jìn)位計(jì)數(shù)為逢16進(jìn)1。
十六進(jìn)制展開成冪級數(shù)形式,例如:
63F.B1H = 6*16^2 + 3*16^1 + F*16^0 + B*16^-1 + 1^16^-2
為了區(qū)分不同的數(shù)制,通常在被標(biāo)記數(shù)后,加上B、D、H大寫字母用來表示二進(jìn)制、十進(jìn)制和十六進(jìn)制。其中十進(jìn)制的D可以省略。
二、不同數(shù)制間數(shù)的轉(zhuǎn)換
1. 二進(jìn)制和十進(jìn)制數(shù)間的轉(zhuǎn)換
二進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)只要把要轉(zhuǎn)換數(shù)按權(quán)展開后相加即可。例如:
10110.11B = 1*2^4 + 0*2^3 + 1*2^2 + 1*2^1 + 0*2^0 + 1*2^-1 + 1* 2^-2 = 22.75
十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)的轉(zhuǎn)換過程是上述轉(zhuǎn)換過程的逆過程,但是十進(jìn)制整數(shù)和小數(shù)轉(zhuǎn)換成二進(jìn)制整數(shù)和小數(shù)的方法是不同的。
(1)十進(jìn)制整數(shù)轉(zhuǎn)換成二進(jìn)制整數(shù)
常用的方法是除2取余法,首先用2除要轉(zhuǎn)換的十進(jìn)制數(shù),得到一個(gè)商和一個(gè)余數(shù),然后繼續(xù)用2除上次得到的商,直到商為0為止,最后把各次余數(shù)按最后得到的為最高位,最早得到的為最低為,依次排列起來便得到所求的二進(jìn)制數(shù)。
舉例說明:求出231所對應(yīng)的二進(jìn)制數(shù),其豎式為:

按照上圖箭頭方向?qū)⒂鄶?shù)排列可得:231 = 11100111B
(2)十進(jìn)制小數(shù)轉(zhuǎn)換成二進(jìn)制小數(shù)
十進(jìn)制小數(shù)轉(zhuǎn)換成二進(jìn)制小數(shù)通常采用乘2取整法,首先用2去乘要轉(zhuǎn)換的十進(jìn)制小數(shù),將乘積結(jié)果的整數(shù)部分提出來,然后繼續(xù)用2去乘上次乘積的小數(shù)部分,直到所得積的小數(shù)部分為0或滿足所需精度為止,最后把各次整數(shù)按最先得到的為最高位、最后得到的為最低位,依次排列起來便得到所求的二進(jìn)制小數(shù)。
舉例說明:把十進(jìn)制小數(shù)0.6879轉(zhuǎn)換為二進(jìn)制小數(shù),其解法為:

按照上圖箭頭方向?qū)⒄麛?shù)排列可得:0.6879 ≈ 0.1011B
需要注意的是:任何十進(jìn)制整數(shù)都可以精確地轉(zhuǎn)換成一個(gè)二進(jìn)制整數(shù),但任何十進(jìn)制小數(shù)卻不一定可以精確地轉(zhuǎn)換成一個(gè)二進(jìn)制小數(shù)。
2. 十六進(jìn)制和十進(jìn)制數(shù)間的轉(zhuǎn)換
(1)十六進(jìn)制數(shù)轉(zhuǎn)成十進(jìn)制數(shù)
十六進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)的方法和二進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)的方法類似,即把十六進(jìn)制數(shù)按權(quán)展開后相加,例如:
3FEAH = 3*16^3 + 15*16^2 + 14*16^1 + 10*16^0 = 16362
(2)十進(jìn)制數(shù)轉(zhuǎn)成十六進(jìn)制數(shù)
1)十進(jìn)制整數(shù)轉(zhuǎn)成十六進(jìn)制整數(shù)
十進(jìn)制整數(shù)轉(zhuǎn)換成十六進(jìn)制整數(shù),采用的是除16取余法。和十進(jìn)制轉(zhuǎn)成二進(jìn)制的方法類似,用16連續(xù)去除要轉(zhuǎn)換的十進(jìn)制整數(shù),直到商數(shù)小于16為止,然后把各次余數(shù)按逆序排列起來所得的數(shù),便是所求的十六進(jìn)制數(shù)。
舉例說明:把十進(jìn)制數(shù)3901轉(zhuǎn)換成十六進(jìn)制數(shù),其解法為:

因此,3901 = F3DH
2)十進(jìn)制小數(shù)轉(zhuǎn)成十六進(jìn)制小數(shù)
十進(jìn)制小數(shù)轉(zhuǎn)換成十六進(jìn)制小數(shù)的方法是乘16取整法,即把欲轉(zhuǎn)換成十六進(jìn)制小數(shù)的十進(jìn)制小數(shù)連續(xù)乘以16,直到所得乘積的小數(shù)部分為0或達(dá)到所需精度為止,最后把各次整數(shù)按最先得到的為最高位,最后得到的為最低位,依次排列起來便得到所求的十六進(jìn)制小數(shù)。
舉例說明:求0.76171875所對應(yīng)的十六進(jìn)制數(shù),其解法為:

因此,0.76171875 = 0.C3H
3. 二進(jìn)制和十六進(jìn)制數(shù)間的轉(zhuǎn)換
二進(jìn)制和十六進(jìn)制間的轉(zhuǎn)換十分方便,這就是為什么人們要采用十六進(jìn)制對二進(jìn)制加以表達(dá)的原因了。
(1)二進(jìn)制數(shù)轉(zhuǎn)成十六進(jìn)制數(shù)
二進(jìn)制數(shù)轉(zhuǎn)成十六進(jìn)制數(shù)采用四位合一位法,即從二進(jìn)制的小數(shù)點(diǎn)開始,或左或右每四位一組,不足四位以零補(bǔ)位,然后分別把每組用十六進(jìn)制數(shù)碼表示,并按序相連。
舉例說明:將1101111100011.10010100B轉(zhuǎn)成十六進(jìn)制數(shù),其解法為:

因此,1101111100011.10010100B = 1BE3.94H
(2)十六進(jìn)制數(shù)轉(zhuǎn)成二進(jìn)制數(shù)
轉(zhuǎn)換方法是把十六進(jìn)制數(shù)的每位分別用四位二進(jìn)制數(shù)碼表示,然后把它們連成一體。
舉例說明,把十六進(jìn)制數(shù)3AB.7A5轉(zhuǎn)成二進(jìn)制數(shù),其解法為:

因此,3AB.7A5H = 1110101011.011110100101B
三、二進(jìn)制數(shù)的計(jì)算
在計(jì)算機(jī)中,運(yùn)算分為算術(shù)運(yùn)算與邏輯運(yùn)算兩類。算術(shù)運(yùn)算包括:加、減、乘、除運(yùn)算;邏輯運(yùn)算包括:邏輯乘、邏輯加、邏輯非、邏輯異或等。
1. 算術(shù)運(yùn)算
(1)加法運(yùn)算
二進(jìn)制的加法法則是:
0 + 0 = 0
1 + 0 = 0 + 1 = 1
1 + 1 = 0(向鄰近高位進(jìn)位)
1 + 1 + 1 = 1(向鄰近高位進(jìn)位)
(2)減法運(yùn)算
二進(jìn)制的減法法則是:
0 - 0 = 0
1 - 1 = 0
1 - 0 = 1
0 - 1 = 1(向鄰近高位借1當(dāng)作2)
兩個(gè)二進(jìn)制數(shù)相減時(shí),要先判斷它們的大小,把大數(shù)作為被減數(shù),小數(shù)作為減數(shù),差的符號由兩數(shù)關(guān)系決定。
在減法過程中要注意低位向高位借的1應(yīng)當(dāng)作2。
(3)乘法運(yùn)算
二進(jìn)制乘法法則是:
0 * 0 = 0
1 * 0 = 0 * 1 = 0
1 * 1 = 1
兩個(gè)二進(jìn)制數(shù)相乘與兩個(gè)十進(jìn)制數(shù)相乘類似,可以用乘數(shù)的每一位分別去乘以被乘數(shù),所得結(jié)果的最低位與相應(yīng)乘數(shù)位對齊,最后把所有結(jié)果加起來,便得到積。
舉例說明:兩個(gè)四位的二進(jìn)制數(shù)1101B和1001B相乘,其解法為:
被乘數(shù) 1101B
乘數(shù) X 1001B
------------------------------
1101
0000
0000
1101
------------------------------
乘積 1110101B
在計(jì)算機(jī)中,普遍采用部分積左移和部分積右移的方法。前者從乘法最低位向高位逐位進(jìn)行,后者從乘法最高位向低位進(jìn)行,其本質(zhì)異曲同工。
部分積右移法采用邊相乘邊相加的方法,每次加被乘數(shù)或0時(shí)總要先使部分積右移,而被乘數(shù)的位置可保持不變。
(4)除法運(yùn)算
除法是乘法的逆運(yùn)算,二進(jìn)制除法也是從被除數(shù)的最高位開始,查找出夠減除數(shù)的位數(shù),并在其最低位處上商1和完成它對除數(shù)的減法運(yùn)算,然后把被除數(shù)的下一位移到余數(shù)位置上;若余數(shù)不夠減除數(shù),則上商0,并把被除數(shù)的再下一位移到余數(shù)位置上;若余數(shù)夠減除數(shù),則上商1并進(jìn)行余數(shù)減除數(shù)。這樣重復(fù)進(jìn)行,直到全部被除數(shù)的各位都下移到余數(shù)位置上為止。
2. 邏輯運(yùn)算
邏輯運(yùn)算由專門的邏輯電路完成。
(1)邏輯乘運(yùn)算
邏輯乘又稱邏輯與,常用?符號表示。邏輯乘運(yùn)算法則為:
0 ? 0 = 0
1 ? 0 = 0 ? 1 = 0
1 ? 1 = 1
(2)邏輯加運(yùn)算
邏輯加又稱邏輯或,常用算符v表示。邏輯加的運(yùn)算規(guī)則為:
0 v 0 = 0
1 v 0 = 0 v 1 = 1
1 v 1 = 1
(3)邏輯非運(yùn)算
邏輯非運(yùn)算又稱邏輯取反,常采用-運(yùn)算符表示。運(yùn)算規(guī)則為:
非0 = 1
非1 = 0
(4)邏輯異或
邏輯異或又稱為半加,是不考慮進(jìn)位的加法,常采用⊕算符表示。邏輯異或的運(yùn)算規(guī)則為:
0 ⊕ 0 = 1 ⊕ 1 = 0
1 ⊕ 0 = 0 ⊕ 1 = 1
異或運(yùn)算可用于把某數(shù)的若干位取反。異或運(yùn)算還可用于乘除法運(yùn)算中的符號位處理。