跳转至

进制转换

进制转换是将一个数从一种进制表示转换为另一种进制表示的过程。以下是常见的进制转换方法和计算步骤,包括从非十进制到十进制、从十进制到其他进制以及直接在两种非十进制之间转换


一、非十进制转十进制

非十进制数转换为十进制数是通过将该数展开为多项式的形式计算的。对于一个n进制数 \(a_k a_{k-1} \dots a_1 a_0\),其十进制值为:

\[ \text{十进制值} = a_k \cdot n^k + a_{k-1} \cdot n^{k-1} + \dots + a_1 \cdot n^1 + a_0 \cdot n^0 \]

示例:二进制数 \(1011_2\) 转换为十进制

  1. 写出展开式:
    $$
    1011_2 = 1 \cdot 2^3 + 0 \cdot 2^2 + 1 \cdot 2^1 + 1 \cdot 2^0
    $$
  2. 计算各项:
    $$
    = 8 + 0 + 2 + 1 = 11
    $$
  3. 结果:
    \(1011_2 = 11_{10}\)

二、十进制转其他进制

将十进制数转换为其他进制,通常使用除基取余法。具体步骤如下:

  1. 用目标进制数除十进制数,记录余数。
  2. 用商继续除以目标进制,重复步骤1,直到商为0。
  3. 将余数倒序排列,得到目标进制数。

示例:十进制数 \(45_{10}\) 转换为二进制

  1. 用 2 除 \(45\)
    \(45 \div 2 = 22\)\(1\)
  2. 用 2 除 \(22\)
    \(22 \div 2 = 11\)\(0\)
  3. 用 2 除 \(11\)
    \(11 \div 2 = 5\)\(1\)
  4. 用 2 除 \(5\)
    \(5 \div 2 = 2\)\(1\)
  5. 用 2 除 \(2\)
    \(2 \div 2 = 1\)\(0\)
  6. 用 2 除 \(1\)
    \(1 \div 2 = 0\)\(1\)
  7. 将余数倒序排列:
    \(101101_2\)

结果:\(45_{10} = 101101_2\)


三、非十进制之间的直接转换

方法1:通过十进制中转

  1. 先将原始进制数转换为十进制数。
  2. 再将十进制数转换为目标进制数。

示例:八进制 \(17_8\) 转换为二进制

  1. 八进制转十进制:
    \(17_8 = 1 \cdot 8^1 + 7 \cdot 8^0 = 8 + 7 = 15_{10}\)
  2. 十进制转二进制:
    \(15 \div 2 = 7\)\(1\)
    \(7 \div 2 = 3\)\(1\)
    \(3 \div 2 = 1\)\(1\)
    \(1 \div 2 = 0\)\(1\)
    倒序排列:\(1111_2\)

结果:\(17_8 = 1111_2\)

方法2:直接转换(适用于二进制、八进制、十六进制之间)

二进制、八进制、十六进制之间可以直接通过分组合并来转换。

  • 二进制 → 八进制:每3位二进制数对应1位八进制数。
  • 二进制 → 十六进制:每4位二进制数对应1位十六进制数。

示例:二进制 \(1101011_2\) 转换为八进制

  1. 从右向左每3位分组:
    \(1101011\)\(001\ 101\ 011\) (补足高位0)
  2. 将每组转换为八进制:
    \(001 = 1\), \(101 = 5\), \(011 = 3\)
  3. 合并结果:
    \(1101011_2 = 153_8\)

结果:\(1101011_2 = 153_8\)


四、进制转换的注意事项

  1. 位权:每一位的权值由进制的基数决定,权值从右到左依次递增。
  2. 小数部分的进制转换
  3. 小数部分从十进制转其他进制:用目标进制乘小数部分,取整数部分,继续对小数部分重复操作。
  4. 小数部分从其他进制转十进制:将小数部分展开成负指数的幂次求和。
  5. 直接转换:二进制、八进制、十六进制之间可以通过分组快速转换,但其他进制一般需要通过十进制中转。