核心答案:进制互转三条路——任意进制转十进制"按位乘基数的幂再相加";十进制转任意进制"连除基数取余倒排";二进制↔十六进制"4 位一组直译"。0b1011=11,0x2F=47,255=0xFF。

四大进制对照表

十进制二进制八进制十六进制
0000
711177
81000108
10101012A
15111117F
16100002010
100110010014464
25511111111377FF
256100000000400100
1024100000000002000400

二进制转十进制(位权展开)

0b101101 = 1×2⁵+0×2⁴+1×2³+1×2²+0×2¹+1×2⁰ = 32+8+4+1 = 45

速算口诀:从右往左位权 1、2、4、8、16、32、64、128,把 1 对应的位权加起来。

十进制转二进制(除 2 取余)

100 → 二进制:100÷2=50余0 → 50÷2=25余0 → 25÷2=12余1 → 12÷2=6余0 → 6÷2=3余0 → 3÷2=1余1 → 1÷2=0余1

余数倒排:0b1100100 ✓(64+32+4=100)

十六进制转换

  • 二转十六:4 位一组。0b1011 1100 → B C → 0xBC = 188
  • 十六转十:按位乘 16 的幂。0x2F = 2×16+15 = 47
  • 十转十六:除 16 取余。255÷16=15余15(F),15÷16=0余15(F) → 0xFF

实用场景

场景常用进制例子
网页颜色十六进制#FF8800
文件权限八进制chmod 644
内存/地址十六进制0x7FFE
位运算二进制0b1100 & 0b1010
日常计数十进制

常见误区

  1. 0x10=10:错,0x10=16;十六进制的"10"就是十六。
  2. 余数正排:十转二必须倒排余数,正排结果完全错误。
  3. 8、9 出现在八进制:八进制只有 0-7,"0o18" 是非法写法。
  4. 小数部分用同样方法:小数转二进制用"乘 2 取整",如 0.625→0b0.101,和整数方法不同。

用[进制转换计算器](/c/math/base-convert)实时互转二/八/十/十六进制。