来尝试一下写科普文~ 希望这篇有关“二进制”的科普文章连初中生甚至小学生都能听懂。
1 什么是二进制
所谓的“二进制[1]”,就是一种仅用“1”和“0”的排列组合来表示具体数值的,一种记数方法。
例如“1001 1011”就是一个二进制数,它的每位都是非 1 即 0 的,不会出现 2 或者 3 这样的其它数字。但是仅通过 1 和 0 的组合是如何表示某个具体数值的?
2 二进制的数值例子
我们先从一个具体例子开始:

这是一个二进制数(图 1),那么它对应的数值是什么呢?它对应的数值是这样计算的:
首先我们把它的每位分开,然后分别乘上 1, 2, 4, 8, 16, ... 64, 128(图 2):

最后将它们加起来,就得到了这个二进制数对应的数值(图 3):

即,二进制数“1101 0110”所对应的数值是“214”。
现在你可以试着计算一下二进制数“1000 1000”所对应的数值!
3 我们生活中所采用的计数法
看完上面这段说明后,是不是还是感觉晕乎乎的?为什么要设计出这么反人类的计法?以及,它真的可以表示所有数值吗?
其实,二进制和我们生活中所采用的记数方法,阿拉伯数字系统是一样的。
比如,为什么我们会把“514¥”念作“五百一十四 块钱”,而不是“五一四 块钱”呢?
其实,念出“五百一十四”的时候,我们就已经进行了一遍,之前所演示的相乘并求和的过程(图 4)。

那么现再回过头去看下上面二进制的求值过程,是不是又觉得二进制变得亲切了起来呢?
其实二进制和我们平时所使用的记数法是一样的,只不过我们平常会使用十个不同的数字符号来表示数值:“0,1,2,3,4,5,6,7,8,9”,并且每位需要分别乘上“1, 10, 100, 100...”[2]。
而在二进制的世界中只有“1”和“0”,并且每位分别乘上的是“1, 2, 4, 8, 16, ...”。
4 位权
这个每位分别乘上的固定数值,就是所谓的“位权(weight)”,即“每位的权重”。
前面说了,在我们平常生活所使用的记法中,每位的位权分别是“1, 10, 100, 1000”,一般的,从第 1 位开始,第
位的位权其实就是
。而对于二进制,第
位的位权则为
。
一般地,“
进制”第
位的位权就是:
例如三进制第
位的位权就是
。
所以,我们平时生活所使用的记法,也可以叫做“十进制”。
当然,计算机的专业人士会比较喜欢从“0”开始数(图 5),那么此时第
位的位权公式实际上应当是
(图 5)。

从 0 开始数的话,位权公式就变成了更简洁的“
”,也许他们才是对的呢~
从这里开始,下文中所有数都是从第 0 位开始数的,即第
位位权为
,而不是
。
4 位权与进位
那么“位权(weight)”的实际意义究竟是什么呢?其实它规定了进位的规则。
比如,十进制第
位的位权为
,具体地,从第 0 位开始,它的每位位权分别是“1, 10, 100, 1000...”。
我们小学就学过,十进制的加法是逢十进一的,个位满十,就向十位进一。这意思可不就是,1 个 十位的“1” 代表 10 个 个位的“1” 吗?
因此,十位的位权是“10”。然后,1 个百位的代表 10 个十位,因此百位的位权是“100”,以此类推。
那么二进制呢?从第 0 位开始,二进制每位位权分别是“1, 2, 4, 8”,或者说
。
在二进制中,1 个 第 2 位 代表 2 个 第 1 位,1 个 第 1 位 代表 2 个 第 0 位。所以,二进制是“逢二进一”的。
那么一般地,“
进制”就是“逢
进一”的。这也是为什么,它的名字叫做
“进”制。
5 小结
- 我们生活中所使用的记数系统也叫“十进制”,它是“逢十进一”的。
- “二进制”是“逢二进一”的。
- 从第 0 位开始数,“
进制”第
位位权为“
”。
- “
进制”是“逢
进一”的。
- 对于“
进制数”,将它的每位乘上对应的位权,再将它们全部加起来,就能得到这个数对应的数值
6 扩展
下面是一些扩展思考题:
- 二进制第
位小数的位权是多少?
- 从第 0 位开始数,
位
进制正整数的最小值和最大值分别是多少?
- 对于所有的整数,都能分别找到唯一对应的二进制表示吗?
- 对于所有整数,都能分别找到唯一对应的
进制表示吗?
其实第 1 个问题超纲了,第 3、4 个问题相对而言也比较难。但是它们都非常值得思考。