浅析进制的转换原理
进制也就是进位制,做加法运算时满 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 |