二进制、八进制和十六进制都是按位计值的数制。它们的区别在于基数不同。二进制是基数 ,八进制是基数 ,十六进制是基数 。一旦理解了这一点,这些符号看起来就不再神秘了。
在任何位置计数制中,每一位都是基数的幂。十进制中的位值是 、、,依此类推。二进制中的位值是 、、、、,依此类推。这个规则对所有进制都成立。
各种数制使用哪些符号
二进制只使用数字 和 。
八进制使用数字 到 。
十六进制使用 个符号: 到 ,再加上 到 ,分别表示数值 到 。
这意味着,一个十六进制位能承载的信息比一个二进制位更多,因为十六进制的每一位按 的幂计数,而不是按 的幂计数。
核心直觉
一个数不会因为你用不同进制来写,就改变它本身的数值。改变的只是表示方式。
例如,十进制数 ,无论写成二进制、八进制还是十六进制,表示的都是同一个量。不同进制就像是在用不同语言表达同一个数。
一个很有代表性的例子:把 写成二进制、八进制和十六进制
先从十进制开始。
这些都是 的幂:
所以,二进制形式在 、、 和 这些位上是 :
现在利用二进制形式来得到八进制。因为 ,所以从右往左把二进制按每 位一组:
每一组对应一个八进制数字:
所以
接着求十六进制。因为 ,所以从右往左把二进制按每 位一组。不够时在左边补零:
然后把每一组分别转换:
所以
这三种形式表示的都是同一个数:
常见错误
一个常见错误是忘记了进制会改变位值。字符串 在二进制、八进制和十进制中,含义并不相同。
另一个错误是使用了该进制不允许出现的数字。例如,二进制数中不能出现 ,八进制数中不能出现 。
学生在把二进制转换成八进制或十六进制时,也常常分组错误。要从右边开始分组,如果一组不完整,就在左边补零。
这些数制在什么时候使用
二进制是数字系统的基础语言,因为开关天然只有两种状态。八进制和十六进制则是书写长二进制串的更紧凑方式。
你不需要学过计算机科学,也能理解这里的数学思想。这些数制依然很有价值,因为它们训练的是所有位置计数法背后的核心规则:数值取决于基数和所在的位置。
试着做一个类似的转换
试着把 转换成二进制、八进制和十六进制。先把它写成 的幂之和,再对二进制数字分组,得到另外两种形式。