10进制转换成2进制
步骤详解(权值展开法)
1. 列出权值(从大到小排列)
先写出比 169 小的所有 2的幂次方(权值),从大到小排好队:
128 → 64 → 32 → 16 → 8 → 4 → 2 → 1
(因为再大的权值256已经超过169了,所以从128开始)
2. 从最大的权值开始试减
规则:
- 如果能减,标记 1,并减去这个权值;
- 如果不能减,标记 0,保留剩余值。
当前权值 | 能否减去? | 操作 | 剩余值 | 二进制位 |
---|---|---|---|---|
128 | 169 ≥ 128 | ✅ 标记1,169 - 128 = 41 | 41 | 1 |
64 | 41 < 64 | ❌ 标记0,不减去 | 41 | 0 |
32 | 41 ≥ 32 | ✅ 标记1,41 - 32 = 9 | 9 | 1 |
16 | 9 < 16 | ❌ 标记0,不减去 | 9 | 0 |
8 | 9 ≥ 8 | ✅ 标记1,9 - 8 = 1 | 1 | 1 |
4 | 1 < 4 | ❌ 标记0,不减去 | 1 | 0 |
2 | 1 < 2 | ❌ 标记0,不减去 | 1 | 0 |
1 | 1 ≥ 1 | ✅ 标记1,1 - 1 = 0 | 0 | 1 |
3. 组合二进制结果
按权值顺序(从高到低)排列二进制位:
1 0 1 0 1 0 0 1
✅ 最终结果:10101001
验证是否正确
把二进制结果转回十进制验证:
[
1×128 + 0×64 + 1×32 + 0×16 + 1×8 + 0×4 + 0×2 + 1×1 = 128 + 32 + 8 + 1 = 169
]
结果正确!