如果有人問:
10+10=?
您可能會不加思索地回答:“等於20。”這樣的回答對不對呢?可以說對,也可以說不對,這要進行具體的分析。說對,是因爲我們平時都是用十進制,也即用逢十進一的方法來進行計算的。但如果從下面即將介紹的二進制,即逢二進一的觀點來看,那麼,上述回答則是錯的。
我們的祖先,很早以前就創造了十進制,並將它作爲計數的基礎,這是因爲人類有十個手指和十個腳趾這個天生的計算工具。幾千年來,人類一直沿用十進制,這是因爲在一般情況下,使用十進制比用其他進制要方便得多。
但是,在日常生活中,並不是全都採用十進制來計數的。例如,一年有十二個月,這是十二進制;一小時等於六十分鐘,一分鐘等於六十秒,這是六十進制;一公尺等於三市尺,這是三進制;鞋、襪都是以雙來計算的,一雙等於兩隻,這是二進制。等等。
計算機作爲一種計算工具,採用哪一種進制計數呢?計算機是由大量的電子器件組成的,在這些電子器件中,電路的通和斷、電位的高和低,用兩種數字符號“1”和“0”分別表示,容易實現。二進制的運算法則很簡單,加法法則四個,乘法法則四個,即:
0+0=0,0+1=1,1+0=1,1+1=10;0×0=0,0×1=0,1×0=0,1×1=1
考慮到運算簡便、節省器件、容易實現、經濟、可靠等因素,因此,在計算機內部通常用二進制代碼來作爲內部存儲、傳輸和處理信息的計數方法。
二、十進制
十進制數計數的特點是“逢十進一”。爲了表示十進制的某位數,需要10個數字0,1,2,3,4,5,6,7,8,9,就是說十進制的基數爲10。
在十進制數中,不同數位上的數字所表示的值是不相同的。例如在十進制數163和1267中,數字6都出現在十位數的位置上,因此,這兩個數中的數字6的值都是60。通常,我們把某一固定位置上的計數單位叫做位權,例如:
個位數的位權爲100=1 (基數10的0次方)
十位數的位權爲101=10 (基數10的1次方)
百位數的位權爲102=10×10=10 (基數10的2次方)
千位數的位權爲103=10×10×10=1000 (基數10的3次方)
……
由上述可見,在十進制計數中,各位上的位權值是基數10的若干次方。因此,任何一個十進制數都可以用橫式展開式(位權表示法)來表示。例如:
(7852)10=7×103+8×102+5×101+2×100
三、二進制
1.二進制的計數
所謂二進制計數,即每一位只有兩個數,要麼是0,要麼是1,而且顧名思義,是“逢二進一”。因此,二進制計數的基數爲2。
在十進制中,每個數可以用橫式分解成個、十、百、千,……各位數之和相加,例如:
(163)10=1×100+6×10+3×1
同樣,在二進制中,我們也可以用橫式來分解二進制數。例如,二進制數1010等於十進制數的多少呢?
<?XML:NAMESPACE PREFIX = V /> (1010)2= (1000)2 + (10)2
對應十進制的2×2×2=8 對應十進制的2
在這裏,二進制的10包括兩個二進制位,因爲是逢二進一,每增加1位就乘以2。同樣,二進制1000包括二進制的4個位,每增加1位也乘以2,所以,二進制的1000等於十進制的2×2×2=8。因此,二進制的1010等於十進制的10,即(1010)2=(10)10。按照這個原則,要表示十進制的10,需要有4個二進制位,它們之間的對應關係如表2-1所示。
十進制數 |
二進制數 |
0 1 2 3 4 5 6 7 8 9 10 |
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 |
表2-1 二進制的計數
2.二進制數轉換成十進制數
與二進制計數類似,根據位權表示法,在二進制數中的每一位數字在不同位置上具有不同的值,而且二進制各位上的位權值是基數2的若干次方,例如:
20=1
21=2×1=2
22=2×2=4
23=2×2×2=8
……
將二進制數轉換成十進制數的方法是:
(1)把這個二進制數的最低一位(第0位)乘以2的0次方(即20),倒數第二位(第1位)乘以2的1次方(即21),……,一直到最高位(第n位)乘以2的n次方(即2n)。
(2)最後將各項乘積相加,得到的結果就是二進制數所對應的十進制數。
例2-1 把二進制數1101101轉換成十進制數。
解:(1101101)2 =1×26+1×25+0×24+1×23+1×22+0×21+1×20
=64 +32+0+8+4+0+1
=109
∴ (1101101)2 =(109)10
3.十進制數轉換成二進制數
將十進制數轉換成二進制數的方法是:
(1)將這個十進制數除以2,得到一個商數和餘數;再將得到的商數除以2,又得到一個商數和餘數;這樣一直繼續下去,直到商數等於0爲止。
(2)第一次得到的餘數是對應二進制數的最低位,最後一次得到的餘數爲對應的二進制數的最高位,其它餘數依次類推。
這種轉換方法稱爲“除2反向取餘法”。
例2-2 把十進制數163轉換成二進制數。
解:用豎式:
然後按從高位到低位順序排列取其餘數,便爲這個十進制數所對應的二進制數。即(163)10=(10100011)2
二進制數,也可以用英文字母B來表示,例如(10100011)2=10100011B
我們可以將這個二進制數轉換成十進制來驗算。
(10100011)2=1×27+1×25+1×21+1×20=(163)10
例2-3 將十進制1023轉換成二進制數。
解:
∴ (1023)10=(1111111111)2
這個例子說明,用十位數二進制,就能表示最大值可到1023的十進制數,也即能表示0~1023共1024個十進制數。這就解答了前面提到的爲什麼計算機用二進制作爲數的最基本單位比用十進制作爲數的最基本單位要更加節省元件的問題。
四、八進制
1.八進制的計數
在計算機中,所有的信息都是以二進制的方式來加以儲存和運算的。但是,二進制數位數太多,冗長難記,所以人們常常將它寫成八進制和十六進制的方式。
在八進制計數中,爲了表示八進制的某位數,需要8個數字0,1,2,3,4,5,6,7。因此,八進制的基數爲8,它的計數特點是“逢八進一”。
2.八進制數轉換成十進制數
將八進制數轉換成十進制數,與二進制數轉換成十制進制數類似,可以用橫式展開式(位權表示法)來完成。
例2-4 將八進制數653轉換成十進制數。
解:(653)8 =6×82+5×81+3×80
=384+40+3
=427
∴ (653)8=(427)10
3.十進制數轉換成八進制數
將十進制數轉換成八進制數,與十進制數轉換成二制進制數類似,可以用“除8反向取餘法”來完成。
例2-5 把十進制數427轉換成八進制數。
解:用豎式:
然後按從高位到低位順序排列取其餘數,便爲這個十進制數所對應的八進制數。也即(427)10=(653)8
八進制數,也可以用英文字母Q來表示,例如(653)8=653Q
五、十六進制
1.十六進制的計數
十六進制,顧名思義是逢十六進一,它在計算機上的作用,是用來縮短冗長的二進制數,以便於閱讀和使用。在計算機中,十六進制常用來縮寫二進制地址。十六進制的數除0~9以外,還用A、B、C、D、E、F等6個字母來對應表示十進制的10、11、12、13、14、15這六個數字。因此,十六進制的基數爲16,它的計數特點是“逢十六進一”。
表2-2列出了十進制、十六進制、八進制和二進制的計數。
十進制數 |
十六進制數 |
八進制數 |
二進制數 |
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
0 1 2 3 4 5 6 7 8 9 A B C D E F 10 |
0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 20 |
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 10000 |
2.十六進制數轉換成十進制數
將十六進制數轉換成十進制數,與二進制數轉換成十制進制數類似,可以用橫式展開式(位權表示法)來完成。
例2-6 將十六進制數47A轉換成十進制數。
解:(47A)16=4×162+7×161+10×160
=1024+112+10
=1146
∴ (47A)16=(1146)10
3.十進制數轉換成十六進制數
將十進制數轉換成十六進制數,與十進制數轉換成二制進制數類似,可以用“除16反向取餘法”來完成。
例2-7 把十進制數1146轉換成十六進制數。
解:用豎式:
然後按從高位到低位順序排列取其餘數,便爲這個十進制數所對應的十六進制數。也即(1146)10=(47A)16
十六進制數,也可以用英文字母H來表示,例如(1146)10=47AH。
六、 二進制、八進制、十六進制之間的關係
1.二進制與八進制之間的轉換
由於8=2×2×2,即8=23。可知一位八進制數相當於3位二進制數。
(1)二進制數轉換成八進制數
將一個二進制數轉換成八進制數,只要把二進制數從右往左每三位計算出對應的一位八進制數(不足三位的,前面添加“0”補足三位)。
例2-8 將二進制數11011010101轉換成八進數。
解:二進制數: 011 011 010 101
↓ ↓ ↓ ↓
八進制數: 3 3 2 5
∴(11011010101)2=(3325)8
(2)八進制數轉換成二進制數
將一個八進制數轉換成二進制數,只要把每位八進制數用對應的三位二制數來代替。
例2-9 將八進制數3675轉換成二進制數。
解: 八進制數: 3 6 7 5
↓ ↓ ↓ ↓
二進制數: 011 110 111 101
∴(3675)8=(11110111101)2
在將八進制數轉換成二進制數時,最後得到的二進制數最高位的“0”往往都可以去掉。
2.二進制與十六進制之間的轉換
由於16=2×2×2×2,即16=24。因此,一位十六進制數相當於4位二進制數。
(1)二進制數轉換成十六進制數
將一個二進制數轉換成十六進制數的方法是:只要把二進制數從右往左每四位爲一組計算出對應的一位十六進制數(不足四位的,前面添加“0”補足四位)。
例2-10 將二進制數10011001111轉換成十六進制數。
解: 二進制數: 0100 1100 1111
↓ ↓ ↓
十六進制數:4 C F
∴(10011001111)2=(4CF)16
(2)十六進制數轉換成二進制數
將一位十六進制數轉換成二進制數,只要把每位十六進制數用對應的四位二制數來代替。
例2-11 將十六進數3B4C轉換成二進制數。
解:十六進制數: 3 B 4 C
↓ ↓ ↓ ↓
二進制數: 0011 1011 0100 1100
∴(3B4C)16=(11101101001100)2
在將十六進制數轉換成二進制數時,最後得到的二進制數最高位的“0”往往都可以去掉。
需要說明的是,表示一個數,如果是十進制數,則不必特別註明果是二、八、十六進制數,則要用下標或字母來說明。