反馈

进制转换原理:二进制、八进制、十六进制怎么互相换算

二进制、八进制、十进制、十六进制说到底都是同一个数字的不同"写法",区别只在于"逢几进一"。搞懂进位制的本质,进制转换就不再需要死记硬背规则。


目录

  1. 进位制的本质:逢 N 进一
  2. 为什么计算机领域偏爱十六进制和二进制
  3. 手算转换的方法
  4. 任意进制:不止 2/8/10/16

1. 进位制的本质:逢 N 进一

十进制"逢十进一",用 0-9 十个符号;二进制"逢二进一",只用 0 和 1;十六进制"逢十六进一",需要 16 个符号,所以借用 A-F 表示 10-15。任何一个数字在不同进制下数值是一样的,只是符号写法不同——比如十进制的 13,在二进制里写作 1101(1×8 + 1×4 + 0×2 + 1×1 = 13),在十六进制里写作 D(对应十进制的 13)。进位制之间没有本质区别,都是"用固定数量的符号,按位权累加表示数值"这一套通用规则的不同参数版本。

2. 为什么计算机领域偏爱十六进制和二进制

计算机内部只有"通电/不通电"两种状态,天然对应二进制——这是硬件层面的根本原因,CPU、内存、网络协议底层全部基于二进制运算。但二进制写出来太长(比如一个字节 8 位,写成二进制要 8 个字符),人工阅读和书写非常不方便。

十六进制成为折衷方案的原因很巧妙:4 位二进制恰好对应 1 位十六进制(2⁴ = 16),所以十六进制既能完整、精确地反映底层二进制数据的每一位,又比直接写二进制短 4 倍——这也是为什么内存地址、颜色代码(#FF5733)、MAC 地址、字节码调试等场景几乎全用十六进制而不是十进制或直接用二进制。

3. 手算转换的方法

十进制转二进制:不断除以 2 取余数,余数从下往上排列。比如 13:13÷2=6余1,6÷2=3余0,3÷2=1余1,1÷2=0余1,从下往上读余数得到 1101

二进制转十进制:按位权展开求和。1101 = 1×2³ + 1×2² + 0×2¹ + 1×2⁰ = 8+4+0+1 = 13

二进制和十六进制互转最简单:因为 4 位二进制正好对应 1 位十六进制,只需要把二进制从右往左每 4 位分一组,每组单独转成一位十六进制数字即可,不需要经过十进制中转。比如二进制 11010110,从右分组是 11010110,分别是十六进制的 D6,所以结果是 D6

4. 任意进制:不止 2/8/10/16

进位制的规则可以推广到任意底数 N(N 通常取 2 到 36,因为超过 36 就需要借用比 26 个英文字母更多的符号)。Base36 就是常见的扩展应用:用 0-9 加 A-Z 共 36 个符号,能把一个较大的十进制数字编码成更短的字符串,常用于短链接、邀请码这类需要"数字变短"的场景——本质上和进制转换是同一套原理,只是选择了一个更大的底数以换取更短的编码长度。


在线工具:进制转换