进制换算详解:二进制、八进制、十进制与十六进制

无论哪种进制,背后都是同一个"位值"原理,区别只在于能用的数字符号有多少个。

位值原理在任何进制下都通用

每一位数字的实际大小,等于该数字乘以进制底数的相应次幂,从最右一位的0次幂开始计数。正是这一条规则,让十进制的10、二进制的1010、十六进制的A表示的其实是同一个数量。

二进制是硬件的"母语"

晶体管天然只有开、关两种稳定状态,因此计算机内部存储的一切数据最终都是二进制形式。我们平时看到的十进制数字、颜色代码等,只是在展示层面做的转换。

十六进制是二进制的紧凑简写

十六进制使用0~9再加上A~F表示10~15。由于16正好是2的4次方,一位十六进制数字恰好对应4位二进制数字,因此十六进制能把冗长的二进制串压缩成人类更容易读懂的形式,这也是颜色代码、内存地址常用十六进制表示的原因。

八进制是比十六进制更小的一种简写

八进制使用0~7这几个数字,一位八进制数字对应3位二进制数字。它在早期计算机中很常见,如今仍出现在Unix系统的文件权限表示(如755)等特定场合。

不经过十进制的快速换算法

把二进制转换成十六进制或八进制(或反过来)时,只需从右往左把二进制数字每4位(转十六进制)或每3位(转八进制)分成一组,分别单独转换即可,完全不需要先转成十进制再转。

最高可到36进制

2~36之间的任意进制都可以用0~9加上A~Z这些字符表示。36进制是用标准字母数字字符集能表示的实际上限,常见于短链接、短ID生成等场景。

为什么计算机的一切单位都建立在二进制之上

晶体管本质上就是只有两种状态的开关,所以二进制并不是某种设计上的偏好,而是硬件本身的直接体现。早期计算机史上,8位被确定为一个字节(byte)这一标准分组大小,而十六进制之所以流行,正是因为两位十六进制数字恰好能不多不少地表示一个字节。

不用计算器也能快速换算的窍门

换算成十进制,只需把每一位数字乘以对应的位权(底数的幂)再相加即可。二进制转十六进制或八进制时,直接按位分组要比先转十进制再转快得多。平时多记一些2的幂(到2的16次方),对二进制、十六进制的心算会有很大帮助。

常见问题

为什么程序员读内存地址时更喜欢用十六进制而不是二进制?

表示一个字节,二进制需要8位数字,而十六进制只需要2位。因为16正好是2的幂,能与4位二进制干净地对应,十六进制因此能在与二进制完全一致的前提下,变得更紧凑、更便于一眼看懂。

日常使用中最大的进制一般是多少?

用0~9加A~Z这套标准字符集来表示,实际上限就是36进制,因为已经没有更多单个字符能表示更大的数字了。它常见于短链接、ID生成等需要用短字符串表示较大数值的场景。