计算机中的数制
文章目錄
- 一、計算機中的各種數制
- 1. 十進制
- 2. 二進制
- 3. 十六進制
- 二、不同數制間數的轉換
- 1. 二進制和十進制數間的轉換
- (1)十進制整數轉換成二進制整數
- (2)十進制小數轉換成二進制小數
- 2. 十六進制和十進制數間的轉換
- (1)十六進制數轉成十進制數
- (2)十進制數轉成十六進制數
- 1)十進制整數轉成十六進制整數
- 2)十進制小數轉成十六進制小數
- 3. 二進制和十六進制數間的轉換
- (1)二進制數轉成十六進制數
- (2)十六進制數轉成二進制數
- 三、二進制數的計算
- 1. 算術運算
- (1)加法運算
- (2)減法運算
- (3)乘法運算
- (4)除法運算
- 2. 邏輯運算
- (1)邏輯乘運算
- (2)邏輯加運算
- (3)邏輯非運算
- (4)邏輯異或
數制是指數的制式,是人們利用符號計數的一種科學方法。
一、計算機中的各種數制
在計算機中常用的數制有十進制、二進制、八進制和十六進制等。
1. 十進制
十進制是我們經常用到的進位數制,它包括:0、1、2、3、4、5、6、7、8、9共十個數字符號。這十個數字符號又稱為“數碼”,每個數碼在數中最多可有兩個值的概念,一個是數字符號的數值,另一個是該數字符號的權。
舉個例子,例如:十進制數34中的數碼3,其本身的值為3,它的權為10^1,所以它實際代表的值是30。在數學上,數制中數碼的個數定義為基數,故十進制的基數為10。
任何一個十進制數都可以展開成冪級數形式,例如:
423.76 = 4*10^2 + 2*10^1 + 3*10^0 + 7*10^-1 + 6*10^-22. 二進制
二進制總共有0和1兩個數碼,任何二進制數都由這兩個數碼組成。
二進制數的基數為2,做加法時,遵循逢2進1的進位原則。
二進制展開成冪級數形式,如下所示:
10110.11 = 1*2^4 + 0*2^3 + 1*2^2 + 1*2^1 + 0*2^0 + 1*2^-1 + 1* 2^-2其中,指數2^4、2^3、2^2、2^1、2^0、2^-1、2^-2為權,2為基數,其余和十進制時相同。
3. 十六進制
十六進制有0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F共16個數碼,任何一個十六進制數都是由其中的一些或全部數碼構成。
十六進制數的基數為16,進位計數為逢16進1。
十六進制展開成冪級數形式,例如:
63F.B1H = 6*16^2 + 3*16^1 + F*16^0 + B*16^-1 + 1^16^-2為了區分不同的數制,通常在被標記數后,加上B、D、H大寫字母用來表示二進制、十進制和十六進制。其中十進制的D可以省略。
二、不同數制間數的轉換
1. 二進制和十進制數間的轉換
二進制數轉換成十進制數只要把要轉換數按權展開后相加即可。例如:
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十進制數轉換成二進制數的轉換過程是上述轉換過程的逆過程,但是十進制整數和小數轉換成二進制整數和小數的方法是不同的。
(1)十進制整數轉換成二進制整數
常用的方法是除2取余法,首先用2除要轉換的十進制數,得到一個商和一個余數,然后繼續用2除上次得到的商,直到商為0為止,最后把各次余數按最后得到的為最高位,最早得到的為最低為,依次排列起來便得到所求的二進制數。
舉例說明:求出231所對應的二進制數,其豎式為:
按照上圖箭頭方向將余數排列可得:231 = 11100111B
(2)十進制小數轉換成二進制小數
十進制小數轉換成二進制小數通常采用乘2取整法,首先用2去乘要轉換的十進制小數,將乘積結果的整數部分提出來,然后繼續用2去乘上次乘積的小數部分,直到所得積的小數部分為0或滿足所需精度為止,最后把各次整數按最先得到的為最高位、最后得到的為最低位,依次排列起來便得到所求的二進制小數。
舉例說明:把十進制小數0.6879轉換為二進制小數,其解法為:
按照上圖箭頭方向將整數排列可得:0.6879 ≈ 0.1011B
需要注意的是:任何十進制整數都可以精確地轉換成一個二進制整數,但任何十進制小數卻不一定可以精確地轉換成一個二進制小數。
2. 十六進制和十進制數間的轉換
(1)十六進制數轉成十進制數
十六進制數轉換成十進制數的方法和二進制數轉換成十進制數的方法類似,即把十六進制數按權展開后相加,例如:
3FEAH = 3*16^3 + 15*16^2 + 14*16^1 + 10*16^0 = 16362(2)十進制數轉成十六進制數
1)十進制整數轉成十六進制整數
十進制整數轉換成十六進制整數,采用的是除16取余法。和十進制轉成二進制的方法類似,用16連續去除要轉換的十進制整數,直到商數小于16為止,然后把各次余數按逆序排列起來所得的數,便是所求的十六進制數。
舉例說明:把十進制數3901轉換成十六進制數,其解法為:
因此,3901 = F3DH
2)十進制小數轉成十六進制小數
十進制小數轉換成十六進制小數的方法是乘16取整法,即把欲轉換成十六進制小數的十進制小數連續乘以16,直到所得乘積的小數部分為0或達到所需精度為止,最后把各次整數按最先得到的為最高位,最后得到的為最低位,依次排列起來便得到所求的十六進制小數。
舉例說明:求0.76171875所對應的十六進制數,其解法為:
因此,0.76171875 = 0.C3H
3. 二進制和十六進制數間的轉換
二進制和十六進制間的轉換十分方便,這就是為什么人們要采用十六進制對二進制加以表達的原因了。
(1)二進制數轉成十六進制數
二進制數轉成十六進制數采用四位合一位法,即從二進制的小數點開始,或左或右每四位一組,不足四位以零補位,然后分別把每組用十六進制數碼表示,并按序相連。
舉例說明:將1101111100011.10010100B轉成十六進制數,其解法為:
因此,1101111100011.10010100B = 1BE3.94H
(2)十六進制數轉成二進制數
轉換方法是把十六進制數的每位分別用四位二進制數碼表示,然后把它們連成一體。
舉例說明,把十六進制數3AB.7A5轉成二進制數,其解法為:
因此,3AB.7A5H = 1110101011.011110100101B
三、二進制數的計算
在計算機中,運算分為算術運算與邏輯運算兩類。算術運算包括:加、減、乘、除運算;邏輯運算包括:邏輯乘、邏輯加、邏輯非、邏輯異或等。
1. 算術運算
(1)加法運算
二進制的加法法則是:
0 + 0 = 0 1 + 0 = 0 + 1 = 1 1 + 1 = 0(向鄰近高位進位) 1 + 1 + 1 = 1(向鄰近高位進位)(2)減法運算
二進制的減法法則是:
0 - 0 = 0 1 - 1 = 0 1 - 0 = 1 0 - 1 = 1(向鄰近高位借1當作2)兩個二進制數相減時,要先判斷它們的大小,把大數作為被減數,小數作為減數,差的符號由兩數關系決定。
在減法過程中要注意低位向高位借的1應當作2。
(3)乘法運算
二進制乘法法則是:
0 * 0 = 0 1 * 0 = 0 * 1 = 0 1 * 1 = 1兩個二進制數相乘與兩個十進制數相乘類似,可以用乘數的每一位分別去乘以被乘數,所得結果的最低位與相應乘數位對齊,最后把所有結果加起來,便得到積。
舉例說明:兩個四位的二進制數1101B和1001B相乘,其解法為:
被乘數 1101B 乘數 X 1001B ------------------------------1101000000001101 ------------------------------ 乘積 1110101B在計算機中,普遍采用部分積左移和部分積右移的方法。前者從乘法最低位向高位逐位進行,后者從乘法最高位向低位進行,其本質異曲同工。
部分積右移法采用邊相乘邊相加的方法,每次加被乘數或0時總要先使部分積右移,而被乘數的位置可保持不變。
(4)除法運算
除法是乘法的逆運算,二進制除法也是從被除數的最高位開始,查找出夠減除數的位數,并在其最低位處上商1和完成它對除數的減法運算,然后把被除數的下一位移到余數位置上;若余數不夠減除數,則上商0,并把被除數的再下一位移到余數位置上;若余數夠減除數,則上商1并進行余數減除數。這樣重復進行,直到全部被除數的各位都下移到余數位置上為止。
2. 邏輯運算
邏輯運算由專門的邏輯電路完成。
(1)邏輯乘運算
邏輯乘又稱邏輯與,常用?符號表示。邏輯乘運算法則為:
0 ? 0 = 0 1 ? 0 = 0 ? 1 = 0 1 ? 1 = 1(2)邏輯加運算
邏輯加又稱邏輯或,常用算符v表示。邏輯加的運算規則為:
0 v 0 = 0 1 v 0 = 0 v 1 = 1 1 v 1 = 1(3)邏輯非運算
邏輯非運算又稱邏輯取反,常采用-運算符表示。運算規則為:
非0 = 1 非1 = 0(4)邏輯異或
邏輯異或又稱為半加,是不考慮進位的加法,常采用⊕算符表示。邏輯異或的運算規則為:
0 ⊕ 0 = 1 ⊕ 1 = 0 1 ⊕ 0 = 0 ⊕ 1 = 1異或運算可用于把某數的若干位取反。異或運算還可用于乘除法運算中的符號位處理。
總結
- 上一篇: js仿饿了吗?谁去拿外卖小游戏(锻炼布局
- 下一篇: 五种聚类方法