进制运算初步

基本概念

  • 基数:每一位允许使用的数字符号个数
    • 二进制(Binary):基数 2,数字 0和1
    • 八进制(Octal):基数 8,数字 0–7
    • 十六进制(Hexadecimal):基数 16,数字 0–9, A–F (A=10, B=11, C=12, D=13, E=14, F=15)

1. 十进制 → R 进制(R = 2、8、16)

方法除 R 取余,倒序排列

步骤:

  1. 用十进制数不断除以 R
  2. 记录每次的余数(0 ~ R-1)
  3. 直到商为 0 为止
  4. 将余数 从下往上(最后得到的余数在最前面)写出

十六进制时,余数 10~15 要写成 A~F(偶尔也可以a~f)

示例 1:十进制 25 → 二进制(R=2)

 25 ÷ 2 = 12 余 1 ↑
 12 ÷ 2 = 6 余 0 |
 6 ÷ 2 = 3 余 0 |
 3 ÷ 2 = 1 余 1 |
 1 ÷ 2 = 0 余 1 |

结果:25₁₀ = 11001₂(余数倒序结果)


示例 2:十进制 234 → 八进制(R=8)

 234 ÷ 8 = 29 余 2 ↑
 29 ÷ 8 = 3 余 5 |
 3   ÷ 8 = 0 余 3 |

结果:234₁₀ = 352₈


示例 3:十进制 479 → 十六进制(R=16)

 479 ÷ 16 = 29 余 15 (F) ↑
 29 ÷ 16 = 1 余 13 (D) |
 1   ÷ 16 = 0 余 1     |

结果:479₁₀ = 1DF₁₆


2. R 进制 → 十进制(R = 2、8、16)

方法按权展开求和

公式:(数)R=(每一位数字×R位数位置)\text{(数)}_R = \sum (\text{每一位数字} \times R^{\text{位数位置}})

  • 位数位置:从 右向左 从 0 开始编号

十六进制中的 A~F 要先转成 10~15


示例 1:二进制 11001₂ → 十进制

1×24+1×23+0×22+0×21+1×20=16+8+0+0+1=251×2^4 + 1×2^3 + 0×2^2 + 0×2^1 + 1×2^0 = 16 + 8 + 0 + 0 + 1 = 25

结果:11001₂ = 25₁₀


示例 2:八进制 352₈ → 十进制

3×82+5×81+2×80=3×64+5×8+2×1=192+40+2=2343×8^2 + 5×8^1 + 2×8^0 = 3×64 + 5×8 + 2×1 = 192 + 40 + 2 = 234

结果:352₈ = 234₁₀


示例 3:十六进制 1DF₁₆ → 十进制

(D=13, F=15)

1×162+13×161+15×160=1×256+13×16+15×1=256+208+15=4791×16^2 + 13×16^1 + 15×16^0 = 1×256 + 13×16 + 15×1 = 256 + 208 + 15 = 479

结果:1DF₁₆ = 479₁₀


3. N 进制 → M 进制(2、8、16 之间转换)

统一方法先转十进制,再转目标进制

为什么?因为十进制是我们最熟悉的“中间桥梁”

通用公式:

N进制按权展开十进制除M取余M进制N \text{进制} \xrightarrow{\text{按权展开}} \text{十进制} \xrightarrow{\text{除M取余}} M \text{进制}


3.1 二进制 ↔ 八进制(特殊快捷方法)

二进制 → 八进制三位一组(从右向左),每组转成一个八进制数字

  • 不够三位时左边补 0

示例:1100101₂ → 八进制

 分组: 001 100 101
        1   4   5

结果:145₈


八进制 → 二进制每位八进制 → 3 位二进制

示例:352₈ → 二进制

 3 → 011
 5 → 101
 2 → 010

结果:011101010₂(可省略前导0 → 11101010₂)


3.2 二进制 ↔ 十六进制(特殊快捷方法)

二进制 → 十六进制四位一组(从右向左),每组转成一个十六进制数字

示例:110111101011₂ → 十六进制

 分组: 1101 1110 1011
        D   E   B

结果:DEB₁₆


十六进制 → 二进制每位十六进制 → 4 位二进制

示例:1DF₁₆ → 二进制

 1 → 0001
 D → 1101
 F → 1111

结果:000111011111₂(→ 111011111₂)