1. 程式人生 > >各種進位制之間的轉換方法

各種進位制之間的轉換方法

十進位制轉二進位制
用2輾轉相除至結果為1
將餘數和最後的1從下向上倒序寫 就是結果
例如302
302/2 = 151 餘0
151/2 = 75 餘1
75/2 = 37 餘1
37/2 = 18 餘1
18/2 = 9 餘0
9/2 = 4 餘1
4/2 = 2 餘0
2/2 = 1 餘0
故二進位制為100101110

一、二進位制轉換十進位制

例:二進位制 “1101100”
1101100 ←二進位制數
6543210 ←排位方法


例如二進位制換算十進位制的演算法:
1*26 + 1*25 + 0*24 + 1*23 + 1* 22 + 0*21 + 0*20
↑ ↑
說明:2代表進位制,後面的數是次方(從右往左數,以0開始)
=64+32+0+8+4+0+0
=108


二、二進位制換算八進位制
例:二進位制的“10110111011”
換八進位制時,從右到左,三位一組,不夠補0,即成了:
010 110 111 011
然後每組中的3個數分別對應4、2、1的狀態,然後將為狀態為1的相加,如:
010 = 2
110 = 4+2 = 6
111 = 4+2+1 = 7
011 = 2+1 = 3
結果為:2673


三、二進位制轉換十六進位制
十六進位制換二進位制的方法也類似,只要每組4位,分別對應8、4、2、1就行了,如分解為:
0101 1011 1011
運算為:
0101 = 4+1 = 5
1011 = 8+2+1 = 11(由於10為A,所以11即B)
1011 = 8+2+1 = 11(由於10為A,所以11即B)
結果為:5BB


五、八進位制數轉換為十進位制數
八進位制就是逢8進1。
八進位制數採用 0~7這八數來表達一個數。
八進位制數第0位的權值為8的0次方,第1位權值為8的1次方,第2位權值為8的2次方……
所以,設有一個八進位制數:1507,轉換為十進位制為:
計算: 7 * 80 + 0 * 81 + 5 * 82 + 1 * 83 = 839
結果是,八進位制數 1507 轉換成十進位制數為 839


六、十六進位制轉換十進位制
例:2AF5換算成10進位制
直接計算就是: 5 * 160 + F * 161 + A * 162 + 2 * 163 = 10997
(別忘了,在上面的計算中,A表示10,而F表示15)、


現在可以看出,所有進位制換算成10進位制,關鍵在於各自的權值不同。
假設有人問你,十進數 1234 為什麼是 一千二百三十四?你儘可以給他這麼一個算式: 1234 = 1 * 103 + 2 * 102 + 3 * 101 + 4 * 100