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
 ]
 结果正确!
