1. XenForo 1.5.14 中文版——支持中文搜索!现已发布!查看详情
  2. Xenforo 爱好者讨论群:215909318 XenForo专区

“二进制”是什么?

本帖由 漂亮的石头2021-07-17 发布。版面名称:知乎日报

  1. 漂亮的石头

    漂亮的石头 版主 管理成员

    注册:
    2012-02-10
    帖子:
    486,020
    赞:
    46
    [​IMG] Vortex,B站 space.bilibili.com/10252845 阅读原文

    来尝试一下写科普文~ 希望这篇有关“二进制”的科普文章连初中生甚至小学生都能听懂。

    1 什么是二进制

    所谓的“二进制[1]”,就是一种仅用“1”和“0”的排列组合来表示具体数值的,一种记数方法。

    例如“1001 1011”就是一个二进制数,它的每位都是非 1 即 0 的,不会出现 2 或者 3 这样的其它数字。但是仅通过 1 和 0 的组合是如何表示某个具体数值的?

    2 二进制的数值例子

    我们先从一个具体例子开始:

    [​IMG]
    图 1,二进制数“1101 0110”

    这是一个二进制数(图 1),那么它对应的数值是什么呢?它对应的数值是这样计算的:

    首先我们把它的每位分开,然后分别乘上 1, 2, 4, 8, 16, ... 64, 128(图 2):

    [​IMG]
    图 2,每位分开并分别乘上 1, 2, 4, 8, ...

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

    [​IMG]
    3,将所有结果加起来,就得到了这个二进制数对应的数值“214”

    即,二进制数“1101 0110”所对应的数值是“214”。

    现在你可以试着计算一下二进制数“1000 1000”所对应的数值!

    3 我们生活中所采用的计数法

    看完上面这段说明后,是不是还是感觉晕乎乎的?为什么要设计出这么反人类的计法?以及,它真的可以表示所有数值吗?

    其实,二进制和我们生活中所采用的记数方法,阿拉伯数字系统是一样的。

    比如,为什么我们会把“514¥”念作“五百一十四 块钱”,而不是“五一四 块钱”呢?

    其实,念出“五百一十四”的时候,我们就已经进行了一遍,之前所演示的相乘并求和的过程(图 4)。

    [​IMG]
    图 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 位开始,第

    [​IMG]

    位的位权其实就是

    [​IMG]

    。而对于二进制,第

    [​IMG]

    位的位权则为

    [​IMG]



    一般地,“

    [​IMG]

    进制”第

    [​IMG]

    位的位权就是:

    [​IMG]

    例如三进制第

    [​IMG]

    位的位权就是

    [​IMG]



    所以,我们平时生活所使用的记法,也可以叫做“十进制”。

    当然,计算机的专业人士会比较喜欢从“0”开始数(图 5),那么此时第

    [​IMG]

    位的位权公式实际上应当是

    [​IMG]

    (图 5)。

    [​IMG]
    图 5,从 0 开始数

    从 0 开始数的话,位权公式就变成了更简洁的“

    [​IMG]

    ”,也许他们才是对的呢~

    从这里开始,下文中所有数都是从第 0 位开始数的,即第

    [​IMG]

    位位权为

    [​IMG]

    ,而不是

    [​IMG]



    4 位权与进位

    那么“位权(weight)”的实际意义究竟是什么呢?其实它规定了进位的规则。

    比如,十进制第

    [​IMG]

    位的位权为

    [​IMG]

    ,具体地,从第 0 位开始,它的每位位权分别是“1, 10, 100, 1000...”。

    我们小学就学过,十进制的加法是逢十进一的,个位满十,就向十位进一。这意思可不就是,1 个 十位的“1” 代表 10 个 个位的“1” 吗?

    因此,十位的位权是“10”。然后,1 个百位的代表 10 个十位,因此百位的位权是“100”,以此类推。

    那么二进制呢?从第 0 位开始,二进制每位位权分别是“1, 2, 4, 8”,或者说

    [​IMG]



    在二进制中,1 个 第 2 位 代表 2 个 第 1 位,1 个 第 1 位 代表 2 个 第 0 位。所以,二进制是“逢二进一”的。

    那么一般地,“

    [​IMG]

    进制”就是“逢

    [​IMG]

    进一”的。这也是为什么,它的名字叫做

    [​IMG]

    “进”制。

    5 小结

    1. 我们生活中所使用的记数系统也叫“十进制”,它是“逢十进一”的。
    2. “二进制”是“逢二进一”的。
    3. 从第 0 位开始数,“ [​IMG] 进制”第 [​IMG] 位位权为“ [​IMG] ”。
    4. [​IMG] 进制”是“逢 [​IMG] 进一”的。
    5. 对于“ [​IMG] 进制数”,将它的每位乘上对应的位权,再将它们全部加起来,就能得到这个数对应的数值

    6 扩展

    下面是一些扩展思考题:

    1. 二进制第 [​IMG] 位小数的位权是多少?
    2. 从第 0 位开始数, [​IMG][​IMG] 进制正整数的最小值和最大值分别是多少?
    3. 对于所有的整数,都能分别找到唯一对应的二进制表示吗?
    4. 对于所有整数,都能分别找到唯一对应的 [​IMG] 进制表示吗?

    其实第 1 个问题超纲了,第 3、4 个问题相对而言也比较难。但是它们都非常值得思考。

    阅读原文
     
正在加载...