淺析進制的轉換原理
進制也就是進位制,做加法運算時滿 x 進 1,做減法時借 1 當 x,這就是 x 進制,包含 x 個數字即區間 [0, x-1],基數為 x;十進制有 0~9 共10個數字,基數為10,在加減法運算中,滿10進1,借1當10。
1.任意進制向十進制轉換(理解按權相加的方法)
1)十進制轉換為十進制(轉換為本身?多此一舉?先想一想這個問題,或許有必要。)
x進制包含區間為 [0, x-1] 內的整數,在此暫且將這些整數成為 x 進制的“基本數”;
十進制包含的基本數為:0,1,2,3,4,5,6,7,8,9 共10個數;
例:將十進制數 985.211 轉換為十進制
可以將這個數分解:
985.211 =
900.00 + 80.00 + 5.00 + 0.200 + 0.010 + 0.001 =
9 * 100 + 8 * 10 + 5 * 1 + 2 / 10 + 1 / 100 + 1 / 1000 =>
9 * (10^2) + 8 * (10^1) + 5 * (10^0) + 2 * (10^(-1)) + 1 * (10^(-2)) + 1 * (10^(-3)) =
(看到“位權”了嗎?就是那個“10”的冪!)
900 + 80 + 5 + 0.2 + 0.01 + 0.001 = 985.211
我們看到了十進制轉換到十進制的過程,最重要的是分解到出現“位權”的過程,
我們觀察到原來待轉換的進制的每一位數(這個進制的基本數)作為了轉換時每一項的系數,也就是其后的10的冪次的倍數;
由於x進制滿x進1,並在其后補0,即變成了10,所以x進制的10就對應十進制的數x:十進制的10對應十進制的10,二進制的10對應十進制的2,八進制的10對應十進制的8,十六進制的10對應十進制的16...
x進制的數可以像上面的例子一樣分解成每一位數(該進制的基本數)乘以相應的該進制下的10的冪次,由於x進制的10就對應十進制的數x,所以再將x進制的10替換為x后,再計算結果就是對應的十進制數了。
例:
2)二進制轉換為十進制:
將二進制 (1011011) 轉換為十進制
1011.011 =
1000 + 10 + 1 + 0.01 + 0.001 =
1 * (10^3) + 1 * (10^1) + 1 * (10^0) + 1 * (10^-2) + 1 * (10^-3) =>
(開始轉換為十進制,將二進制的10替換為十進制的2)1 * (2^3) + 1 *(2^1) + 1 * (2^0) + 1 * (2^-2) + 1 * (2^-3) =
8 + 2 + 1 + 0.25 + 0.125 = 11.375(轉換為十進制的結果,轉換完畢)
3)八進制轉換為十進制:
將八進制(137.2) 轉換為十進制
137.2 =
100 + 30 + 7 + 0.2 =
1 * (10^2) + 3 * (10^1) + 7 * (10^0) + 2 * (10^-1) =>
(開始轉換為十進制,將八進制的10替換為十進制的8)1 * (8^2) + 3 * (8^1) + 7 *(8^0) + 2 * (8^-1) =
64 + 24 + 7 + 0.25 = 95.25(轉換為十進制的結果,轉換完畢)
4)十六進制轉換為十進制:
將十六進制 (9FABC) 轉換為十進制
9FABC =
90000 + F000 + A00 + B0 + C =
9 * (10^4) + F * (10^3) + A * (10^2) + B * (10^1) + C * (10^0) =>
(開始轉換為十進制,將十六進制的10替換為十進制的16)9 * (16^4) + 15 * (16^3) + 10 * (16^2) + 11 * (16^1) + 12 * (16^0) =
589824 + 61440 + 2560 + 176 + 12 = 654012
5)將九進制數(2022)轉換為十進制
2022 =
2000 + 20 + 2 =
2 * (10^3) + 2 * (10^1) + 2 * (10^0) =>
(開始轉換為十進制,將九進制的10替換為十進制的9)2 * (9^3) + 2 * (9^1) + 2 * (2^0) =
1458 + 18 + 2 = 1478
其他任意進制轉換為十進制可同上方法,不一一舉例。
至此,通過上述分析,我想我已經簡單淺顯地解釋了任意進制轉換為十進制的具體過程和基本原理,以此回答了為什么要用按權相加的方法,你覺得我寫得對不對呢?
2.十進制向任意進制轉換
整數部分:
我們已經知道了什么是進位制,即知道了進位制的變化規則,我們把十進制和其他進制放在一起觀察一下:
其中"t"代表十進制數
進制種類 | 這 | 后 | 面 | 是 | 進 | 制 | 的 | 變 | 化 | . | . | . | . | . | . | ||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
十進制 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
二進制 | 0 | 1 | 10 | 11 | 100 | 101 | 110 | 111 | 1000 | 1001 | 1010 | 1011 | |||||||
對2取模(t%2) | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 |
進制種類 | 這 | 后 | 面 | 是 | 進 | 制 | 的 | 變 | 化 | . | . | . | . | . | . | ||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
十進制 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
八進制 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 20 | 21 | 22 |
對8取模(t%8) | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 0 | 1 | 2 |
進制種類 | 這 | 后 | 面 | 是 | 進 | 制 | 的 | 變 | 化 | . | . | . | . | . | . | ||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
十進制 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
十六進制 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | 10 | 11 | 12 |
對16取模(t%16) | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | 0 | 1 | 2 |