这是本文档旧的修订版!
进制
| 进制 | 数码 | 基数 | 位权 |
| 二进制(B) | 0,1 | 2 | $2^k$ |
| 八进制(O) | 0,1,2,3,4,5,6,7 | 8 | $8^k$ |
| 十进制(D) | 0,1,2,3,4,5,6,7,8,9 | 10 | $10^k$ |
| 十六进制(H) | 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F | 16 | $16^k$ |
位权:数字中每个位置对应的单位值。
十进制与其他进制之间的转换
1)其他进制转十进制
R进制数:$X_{m-1}··· X_{0} X_{-1}··· X_{-n} = \Sigma_{k=-n}^{k=m-1} X_{k} R^{k} $
例如二进制:$101.01=1 \times 2^2+1 \times 2^0+1 \times 2^{-2}=5.25$
2) 十进制转其他进制
| 整数部分:连除取余法 | |
| $N = (d_{m-1} \cdots d_1 d_0)_R$ | |
| 其中从 最低位 $(d_0)$ 到 最高位 $(d_{m-1})$ 的每一位,由 连续除以 R 的余数 决定: | |
| $N_0 = N$\\$N_{i+1} = \lfloor N_i / R \rfloor \quad (i = 0,1,2,\cdots) $\\$d_i = N_i \bmod R \quad \text{(余数,取值范围 } 0 \sim R-1\text{)}$ | |
| 停止条件 | 当 $N_{i+1} = 0 $时停止,最后得到的余数 $d_{m-1}$ 作为最高位。 |
| 示例: | |
十进制 19 转二进制 (R=2)
19 ÷ 2 = 9 余 1 (d_0)
9 ÷ 2 = 4 余 1 (d_1)
4 ÷ 2 = 2 余 0 (d_2)
2 ÷ 2 = 1 余 0 (d_3)
1 ÷ 2 = 0 余 1 (d_4) 停止
结果: $(10011)_2$
小数部分:连乘取整法
$F = (0.d_{-1} d_{-2} \cdots d_{-n})_R$
其中每一位由 连续乘以 R 的整数部分 决定:
$F_0 = F \quad \text{(纯小数部分)} $
$F_{i+1} = \text{frac}(F_i \times R) \quad \text{(取小数部分继续)} $
$d_{-i} = \lfloor F_i \times R \rfloor \quad \text{(乘积的整数部分,作为下一位)}$
停止条件:
-精确转换:当 F_{i+1} = 0 时停止(小数部分乘尽) -近似转换:达到所需精度位数时停止(如保留 n 位小数)
示例: 十进制 0.625 转二进制 (R=2)
0.625 × 2 = 1.25 → 整数部分 1 (d_{-1}),剩余 0.25
0.25 × 2 = 0.5 → 整数部分 0 (d_{-2}),剩余 0.5
0.5 × 2 = 1.0 → 整数部分 1 (d_{-3}),剩余 0.0 停止
结果: (0.101)_2
整数 + 小数 合并处理
若数含整数部分 N 和小数部分 F,则:
$(N.F)_{10} = (N)_{10} \text{转} R \quad + \quad (0.F)_{10} \text{转} R$
两部分分别转换,最后用小数点拼接。
示例: 19.625 转二进制 = (10011)_2 + (0.101)_2 = (10011.101)_2
特殊情况:无限循环
有些十进制小数无法精确转换成二进制(如 0.1),会形成循环:
$0.1_{10} = (0.000110011001100\cdots)_2 = (0.0\overline{0011})_2$
此时按精度要求截断即可。