跳到主要内容

0 的故事 — 给「没有」一个位子,规则就变简单

这一章讲三件事: 同一个数为什么会有好几种写法,而写法决定了算起来费不费劲; 那个看着「什么都没有」的 0 到底在干什么活; 以及这本书真正的主旨——把大问题分解为小单元——第一次露面。

它在全书链条里的位置: 这是地基。后面二十章讲的每一件工具, 拆开看都是同一个动作:换一种写法、或者切成小块,把人做不动的事变成做得动的。 这一章负责把这个动作演示一遍。不需要任何基础,遇到的生词都在当场解释。

1. 先看现象:老师说「十二」,小孩写下了 10 和 2

作者记了一件小学一年级的事:老师说「写一下『十二』」,他翻开本子, 认认真真写下了 10 和 2。老师走过来说:写得不对,应该写成 121

小孩没算错,他只是照着听到的话写。 「十二」这三个字里确实有一个「十」和一个「二」, 而写成 12 的时候,那个「十」跑到哪儿去了?

它跑到位置里去了。1 站在左边那一格,这一格本身就代表「十」; 所以那个字不用写出来。这是一个约定,不是天经地义。

同一个「十二」,罗马数字写作 XII——X 表示 10,I 表示 1,两个 I 并排就是 22数本身没变,变的只是写法。 而这本书第一章要说的就是: 写法不是小事,它决定了你算得动还是算不动。

同一个数,四种写法,四种命运
──────────────────────────────────────────────
写法 2503 长什么样 加法怎么做
──────────────────────────────────────────────
十进制 2503(4 个数字) 竖式,逢十进一
抹掉那个 0 253 ← 这已经不是同一个数了
罗马数字 MMDIII(6 个记号) 并排写完再整理:IIIII 换成 V…
二进制 100111000111(12 位) 竖式,逢二进一;加法表只有 4 格
──────────────────────────────────────────────

图说:这一章从头到尾就走这一个数。四行讲的都是同一个数 2503——
只有第二行是故意抹掉 0 之后的样子,用来说明那个 0 为什么不能省。
差别全在「位置有没有意义」和「有没有 0」这两件事上。

2. 2503 的四个位置,各管多少个

这一节回答:「位置有意义」具体是什么意思。

拿 2503 这个数。它是 2、5、0、3 四个数字并排,但四个数字的分量完全不同3:

数字站在哪一格表示什么值多少
2千位1000 的个数2 × 1000 = 2000
5百位100 的个数5 × 100 = 500
0十位10 的个数0 × 10 = 0
3个位1 的个数3 × 1 = 3

加起来正好 2000 + 500 + 0 + 3 = 2503。这就是主走查的第一步。

我们平时用的这一套,规矩只有两条:能用的数字有 0 到 9 共十种; 从右往左依次是个位、十位、百位、千位4这种「同一个数字站在不同格子里、分量不一样」的写法,叫按位计数法。

千位、百位、十位、个位这四格,还可以写成 10³、10²、10¹、10⁰ 的格子—— 10 的右上角那个数,就是这一格要乘几个 10。 底下那个反复相乘的 10,书里管它叫这套写法的基数,也叫5

3. 抹掉那个 0 试试:它的第一件活是占位

这一节回答:一个「什么都没有」的记号,凭什么不能省。

2503 里的 0 表示十位上「没有」。既然什么都没有,不写行不行?

不行。 把它抹掉就成了 253——2 从千位掉到百位,5 从百位掉到十位, 整个数缩水到原来的十分之一还不到。这就是主走查的第二步。

原书把这件事说得很干脆:0 的作用就是占位; 它占着一个位置,好让比它高的那些数字不会错位6

这里有个反直觉的地方值得停一下: 在按位计数法里, 「什么都没有」这件事本身必须被写出来。 不写,不等于「没有」;不写,等于「这一格根本不存在」。 给「没有」一个记号,是这套写法能成立的前提。

4. 换成罗马数字:没有位置,也没有 0

这一节回答:如果不这么写会怎样——拿一套真的不这么写的系统来对照。

罗马计数法的规矩是另一套7:

规矩说明
位置没有意义一个记号站在哪里,表示的都是同一个数
没有 0整套记号里根本没有表示「没有」的那一个
七个记号I(1)、V(5)、X(10)、L(50)、C(100)、D(500)、M(1000)
并排就是相加III 是 3,VI 是 6,VIII 是 8

2503 用罗马数字写出来是 MMDIII:两个 M(2000)、一个 D(500)、三个 I(3)。 六个记号,比十进制的四个还多两个。这是主走查的第三步。

真正吃亏的地方不在写,在算。罗马数字的加法看着最简单:两个数并排写就行。 1 + 2 就是 I 和 II 并排写成 III,完事。

但数一大就不行了。 3 + 3 不能写成 IIIIII,得把五个 I 换成一个 V,写成 VI。 CXXIII(123)加 LXXVIII(78) 更麻烦:并排写完之后要一层层换—— IIIII 换成 V、VV 换成 X、XXXXX 换成 L、LL 换成 C,最后才得到 CCI(201)8

注意这个「整理」的动作:它干的正是十进制里进位干的事。 区别在于,十进制的进位是规则的一部分、每一位都一样; 而罗马数字的整理要一档一档记(五个 I 换一个 V、两个 V 换一个 X……), 每一档的换法都不一样,得靠背。

罗马数字还有一条「减法规则」:IV 表示 5 − 1 = 4,把小的写在大的左边就是相减9。 所以电影结尾常见的 MCMXCVIII,拆开是 M + CM + XC + V + III = 1000 + 900 + 90 + 5 + 3 = 199810你得先认出哪几个是减法,才能开始加。

5. 换成计算机用的写法:12 位对 4 位

这一节回答:为什么机器不用我们这套。

计算机用的是二进制:能用的数字只有 0 和 1 两种, 从右往左依次是 1 位、2 位、4 位、8 位……每往左一格翻一倍11

2503 换成二进制是 100111000111,整整 12 位12十进制只要 4 位,二进制要 12 位——正好是它的三倍。这是主走查的第四步。

位数变成三倍,机器为什么反而更愿意用它? 两个理由,都很实在。

第一,一位数字只需要两种状态。 电路里有个开关,断开算 0、接通算 1。 要做成能表示 0 到 9 十种状态的开关也不是不行,但结构一定复杂得多。

第二,加法表小得多。 十进制的一位加法表有 100 格(0 到 9 各配 0 到 9); 二进制的只有 4 格:0+0、0+1、1+0、1+1。 原书让读者自己比一比这两张表——做一位加法的电路,4 格的表当然比 100 格的省事13

代价呢?人来看的时候特别费劲。 1000000000000 和 10000000000000 哪个大? 一眼看不出来,得数 0。人喜欢十进制,是因为位数少、不容易算错, 而且我们正好有十根手指头。

但机器不怕。 原书说得很直接:计算机算得非常快,位数再多也没关系; 它也不会像人那样算错,更不需要靠直觉判断一个数的大小14「数字种类少、规则简单」对机器来说就是最好的——所以它选了二进制15

6. 10⁰ 为什么是 1:值是被定义出来的

这一节回答:上一节说个位是 10⁰ 那一格,可 10⁰ 凭什么等于 1?

按「10ⁿ 就是 n 个 10 相乘」的说法,10⁰ 是「0 个 10 相乘」—— 那不该是 0 吗? 这是很自然的疑问,而它的答案能反过来照亮整章。

换个方向想。 把已经确定的那几个排成一列:

10³ = 1000
10² = 100 ← 每往下一行,值变成上一行的 1/10
10¹ = 10
10⁰ = ?

每当右上角那个数减 1,值就变成原来的十分之一16。 照这条规律往下推,10¹ = 10 的十分之一是 1,所以 10⁰ = 1。这是主走查的第五步。

这里作者说了一句全书最要紧的话之一: 不要把 10⁰ = 1 当成一条知识去背, 真正该想的是「怎么定义它,才能让规则变得更简单」—— 这不是背不背得下来的问题,是想象力的问题17

同一条准绳往下推还能给出 10⁻¹ = 1÷10、10⁻² = 1÷10÷10…… 于是右上角那个数可以是任何整数,规则一次都不用分叉。 把这些规律归纳起来就是指数法则:10ᵃ × 10ᵇ = 10ᵃ⁺ᵇ18。 (这条式子在第 14 章会变成一件真正的工具:用加法做乘法。)

回头看,0 干的第二件活就在这里: 正因为有 10⁰ 这一格, 个位才不用被特殊对待,所有位置才能统一写成「10 的某次方」。 原书管这叫标准化——0 在这里起的是让规则不分叉的作用19

7. 生活里的 0:空计划和假胶囊

这一节回答:「给没有一个位子」只是数学里的技巧吗?

不是。原书举了两个日常例子,而第二个特别能说明问题。

第一个是日程表。 一天没安排任何事,那一天在日程表里是一片空白。 如果反过来,把「没有计划」也当成一条计划填进去(比如就叫「空计划」), 你就能搜到它了20——查「哪天有空」和查「哪天有会」变成了同一个动作。

第二个是吃药。 假设一种胶囊要吃三天停一天,再吃三天停一天。 这个节奏很容易乱,因为每天早上你都得先判断一次「今天该吃还是该停」。

改法是给「不吃」也做一粒药: 每四粒里有一粒是没药效的假胶囊, 按日期排进药盒21。于是规则变成一句话——每天一粒。 判断消失了22。(书里的脚注还给了一个真实的例子: 口服避孕药 21 天一个周期,28 粒一组里有 7 粒实际上是没有药效的安慰剂23。)

这两个例子和 2503 里那个 0 是同一件事: 给「什么都没有」一个实实在在的位子,换来一条不用分情况的规则。

8. 全书真正的主旨:把大问题分解为小单元

这一节是这一章的落点,也是全书的落点。 前面七节讲的都是 0, 但作者在章末点破了一件更大的事。

先回到罗马人为什么要发明 V 和 X。 如果一直画 I, 5 就写成 IIIII、12 就写成 IIIIIIIIIIII。这样写行不行?能写,但没法用。 IIIIIIIIII 和 IIIIIIIIIII 哪个大?得一根根数24。换成 X 和 XI,一眼就分得出。

于是先贤造出了「五个一组」「十个一组」这种块25。 把大问题切成一个个能单独处理、还能重复使用的小块,切出来的每一块就叫一个单元

原书把这句话单独拎出来,当成本章的启发:将大问题分解为小单元26。 紧接着又把它推到今天:要解决大问题,就把它分解成多个小单元; 小单元还是太大,就继续往下分,直到问题解决——写大程序时拆成一个个小模块, 用的就是同一招。

然后作者说了一句话,它是我们把这一节写进来的全部理由:

这里介绍的「问题分解法」是本书的主旨之一,这一主旨将会贯穿本书, 渗透在各个小节中27

这句话要当真。 后面每一章都能看见它:

在哪一章那一章把什么切小了
第 02 章把一个大条件拆成「成立」和「不成立」两半
第 06 章把无穷多个数分成七组
第 11 章把六层汉诺塔化成五层
第 14 章把一段查找范围一刀砍成两半
第 20 章不看整张地图,只看脚下这一步该往哪边走

最后一行尤其值得留意:那是附录讲机器怎么学习的地方, 而原书在那里自己回指了这一句(第 20 章第 8 节)。

顺带说一件同源的事: 当数据大到按位计数法也吃不消时 (1000000000000 和 10000000000000 哪个大?), 指数表示法就顶上来了:写成 10¹² 和 10¹³,一眼分高下28。 而它的办法就是只盯着 0 的个数——这正是第 14 章那件工具的雏形。

9. 重温历史:这套写法是几千年凑出来的

这一节回答:按位计数法这么好用,为什么不是一开始就有?

原书用一页纸快速走了一遍,而这一段里藏着一条很有意思的因果29:

文明他们的写法有没有位置的意义
古埃及5 和 10 各用一个记号,混着用没有,当然也没有 0
巴比伦泥板上刻楔形记号,1 和 10 两种,用位置表示 60 的次方,10 进制和 60 进制混着的按位计数法
古希腊把数和图形、宇宙、音乐连在一起更关心意义,不关心记法
玛雅从 0 开始数,20 进制
罗马5 一档、10 一档,V/X/L/C/D/M没有
印度引进巴比伦的按位计数法,并且明确认下 0 也是数字有,而且是 10 进制

那条因果在巴比伦这一行: 泥板上很难刻多种不同的记号, 所以他们必须用尽可能少的记号来表示数。 原书的推断是——也许正是泥板这个硬件限制,逼出了按位计数法30

还有一件事值得记: 我们现在用的 0 到 9 叫「阿拉伯数字」, 可它们是印度人的发明;之所以顶着阿拉伯的名字, 大概是因为把它们带进西欧的是阿拉伯学者31

一小时六十分钟、一分钟六十秒,这个 60 也是巴比伦留下的。 光是「数怎么写」这一件事,就牵扯了这么多国家和文明。

10. 作者的判断、我们的判断,以及这一章的边界

先分清哪些是书里给了理由的,哪些是作者的主张。

说法书里给了什么
0 的作用是占位与标准化给了推导:抹掉 0 会变成另一个数;有了 10⁰ 所有位置才能统一写
计算机采用二进制给了两条理由:开关只要两种状态、加法表只有 4 格
巴比伦的泥板逼出了按位计数法是作者的推断,原文用的是「也许」,没有给史料
「把大问题分解为小单元」是本书主旨是作者的声明,不是推导出来的结论

判断(我们的,不是书里的):这一章真正的价值不在 0,在「值是可以定义的」这件事上。 10⁰ = 1 不是被发现的,是被出来的——挑的准绳是「让规则不分叉」。 一个程序员每天都在做同样的挑选:空列表的长度算 0 还是报错、 两段空文字拼起来得到什么、循环零次该返回什么。 第 10 章还会再挑一次(0 的阶乘定义成 1),用的是同一条准绳。 如果错,会错在: 如果读者把它读成「随便定义都行」,那就完全反了—— 定义不是随意的,它要接住已有的规律。判据是: 读完能不能说出 10⁰ 为什么不能定义成 0。

这一章的边界:

  • 没讲负数、小数在按位计数法里怎么表示——只在推 10⁻¹ 时擦了个边;
  • 没讲进位制之间的通用换算办法,只演示了十进制转二进制那一种(反复除以 2 看余数);
  • 8 进制和 16 进制只列了规矩,没有例子,书里说编程中常用,但到此为止;
  • 「0 也是数字」这件事的哲学与历史争议没有展开,原书只用了一页纸回顾。

11. 可带走的

  1. 数只有一个,写法有好几种;写法决定了算起来费不费劲,不决定数本身;
  2. 按位计数法的核心是「同一个数字站在不同格子里,分量不一样」——2503 里的 2 值 2000;
  3. 0 的第一件活是占位:抹掉 2503 里的 0 就成了 253,高位全部错位;
  4. 0 的第二件活是让规则不分叉:有了 10⁰ = 1,所有位置才能统一写成 10 的某次方;
  5. 值是被定义出来的,定义的准绳只有一条:让规则更简单——不是背不背得下来的问题,是想象力的问题;
  6. 罗马数字的加法看着简单,代价在「整理」:每一档换法都不同,得靠背,数一大就吃不消;
  7. 机器选二进制不是因为它优雅,是因为一位只要两种状态、加法表只有 4 格;位数多它不在乎;
  8. 给「没有」一个位子,能把「每次都要判断」变成「不用判断」——假胶囊和空计划都是这一招;
  9. 全书的主旨在这一章第一次露面:把大问题分解为小单元,后面二十章都是它的变形。

12. 原文地图

主题原书章原文位置
本章要谈 0 的什么第1章 0的故事text/06-ch01-1-0.txt:20(搜「创建模式、简化并总结规则」)
小学一年级写「十二」第1章 0的故事text/06-ch01-1-0.txt:27(搜「写得不对,应该写成 12」) · :35(搜「所表达的“数字本身”并无二致」)
10 进制的两条规矩、2503 的分解第1章 0的故事text/06-ch01-1-0.txt:45(搜「使用的数字有 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 共 10 种」) · :66(搜「累加的结果」) · :86(搜「基数或底」)
2 进制、2503 = 100111000111第1章 0的故事text/06-ch01-1-0.txt:102(搜「使用的数字只有 0 和 1」) · :199(搜「2503 用 2 进制表示为 100111000111」)
计算机为什么用 2 进制第1章 0的故事text/06-ch01-1-0.txt:226(搜「2 进制的表比 10 进制的表简单得多吧」) · :254(搜「位数再多也没有关系」) · :264(搜「计算机采用了 2 进制计数法」)
罗马计数法的四条规矩、整理与减法规则第1章 0的故事text/06-ch01-1-0.txt:328(搜「数位没有意义」) · :336(搜「并排写作 IIIIII」) · :341(搜「减法规则」) · :349(搜「MCMXCVIII 表示的就是 1998」)
10 的 0 次方怎么定出来第1章 0的故事text/06-ch01-1-0.txt:379(搜「数值就变为原先的 10 分之 1」) · :433(搜「以简化规则为目标去定义值」) · :466(搜「指数法则」)
0 的两件活第1章 0的故事text/06-ch01-1-0.txt:477(搜「表示十位“没有”」) · :480(搜「0 的作用就是占位」) · :492(搜「0 在这里起到了标准化的作用」)
空计划与假胶囊第1章 0的故事text/06-ch01-1-0.txt:516(搜「空计」) · :527(搜「没有药效」) · :546(搜「每天服用 1 粒胶囊」)
把大问题分解为小单元第1章 0的故事text/06-ch01-1-0.txt:584(搜「哪」) · :586(搜「先贤们创造出了」) · :590(搜「将大问题分解为小」) · :606(搜「本书的主旨之一」)
重温历史进程第1章 0的故事text/06-ch01-1-0.txt:555(搜「古埃及人使用 5 进制」) · :562(搜「黏土板的硬件限制」) · :571(搜「印度人在引进巴比伦的按位计数法」)

Footnotes

  1. 出处:「第1章 0的故事)——无即是有」第 27 段(text/06-ch01-1-0.txt:27,搜「写得不对,应该写成 12」)。这是作者自己的回忆:他听见「十二」,写下的是 10 和 2。转码后的这两行顺序有些错位(老师那句话的引号被拆开了),但内容完整。

  2. 出处:「第1章 0的故事)——无即是有」第 31 段(text/06-ch01-1-0.txt:31,搜「写作 XII」)与第 35 段(text/06-ch01-1-0.txt:35,搜「所表达的“数字本身”并无二致」)。原文的落点是:12 是阿拉伯数字的计数法,XII 是罗马数字的计数法,无论用哪种,数字本身并无二致。

  3. 出处:「第1章 0的故事)——无即是有」第 66 段(text/06-ch01-1-0.txt:66,搜「累加的结果」)。原文写的是:2503 这个数是 2 个 1000、5 个 100、0 个 10 和 3 个 1 累加的结果。

  4. 出处:「第1章 0的故事)——无即是有」第 45 段(text/06-ch01-1-0.txt:45,搜「使用的数字有 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 共 10 种」)与第 46 段(text/06-ch01-1-0.txt:46,搜「数位有一定的意义」)。原书这里有一条译者注,解释「种」指的是数字的种类:2561 里有 4 种数字,而 1010 里只有 2 种。

  5. 出处:「第1章 0的故事)——无即是有」第 86 段(text/06-ch01-1-0.txt:86,搜「基数或底」)。原文说 10 进制的数位全都是 10ⁿ 的形式,这个 10 称作 10 进制计数法的基数或底。

  6. 出处:「第1章 0的故事)——无即是有」第 477 段(text/06-ch01-1-0.txt:477,搜「表示十位“没有”」)与第 480 段(text/06-ch01-1-0.txt:480,搜「0 的作用就是占位」)。原文接着说:0 占着一个位置,以保证数位高于它的数字不会产生错位。

  7. 出处:「第1章 0的故事)——无即是有」第 328 段(text/06-ch01-1-0.txt:328,搜「数位没有意义」)。这一段起连列四条:数位没有意义、没有 0、用 I/V/X/L/C/D/M 记数、并排相加。

  8. 出处:「第1章 0的故事)——无即是有」第 336 段(text/06-ch01-1-0.txt:336,搜「并排写作 IIIIII」)与第 339 段(text/06-ch01-1-0.txt:339,搜「必须进行与按位计数」)。原文的原话是:在「整理」罗马数字的过程中,必须进行与按位计数法的进位相仿的计算。

  9. 出处:「第1章 0的故事)——无即是有」第 341 段(text/06-ch01-1-0.txt:341,搜「减法规则」)。原文还提到一个例外:钟表表盘上由于历史原因也有把 4 写作 IIII 的。

  10. 出处:「第1章 0的故事)——无即是有」第 349 段(text/06-ch01-1-0.txt:349,搜「MCMXCVIII 表示的就是 1998」)。原文的展开式是 (M) + (CM) + (XC) + (V) + (III) = 1000 + (1000 − 100) + (100 − 10) + 5 + 3。作者读完自己感叹了一句「罗马数字真是费劲啊」。

  11. 出处:「第1章 0的故事)——无即是有」第 102 段(text/06-ch01-1-0.txt:102,搜「使用的数字只有 0 和 1」)与第 103 段(text/06-ch01-1-0.txt:103,搜「从右往左分别表示 1 位、2 位、4 位、8 位」)。

  12. 出处:「第1章 0的故事)——无即是有」第 199 段(text/06-ch01-1-0.txt:199,搜「2503 用 2 进制表示为 100111000111」)。原书是用「反复除以 2、看余数是 1 还是 0、再把余数倒着排」这个办法算出来的,一共除了 12 次。

  13. 出处:「第1章 0的故事)——无即是有」第 226 段(text/06-ch01-1-0.txt:226,搜「2 进制的表比 10 进制的表简单得多吧」)。原书把两张加法表并排画了出来(图 1-3 与图 1-4),让读者自己比。

  14. 出处:「第1章 0的故事)——无即是有」第 254 段(text/06-ch01-1-0.txt:254,搜「位数再多也没有关系」)。原文还说:计算机不会像人类那样发生计算错误,也不需要靠直觉把握数值的大小。

  15. 出处:「第1章 0的故事)——无即是有」第 264 段(text/06-ch01-1-0.txt:264,搜「计算机采用了 2 进制计数法」)。原书在这里总结成两行对照:10 进制位数少但数字种类多(适合人),2 进制数字种类少但位数多(适合机器)。

  16. 出处:「第1章 0的故事)——无即是有」第 379 段(text/06-ch01-1-0.txt:379,搜「数值就变为原先的 10 分之 1」)。原文把这条规律写成一句可以往两头推的规则:指数每减 1,数值就变为原来的 10 分之 1。

  17. 出处:「第1章 0的故事)——无即是有」第 431 段(text/06-ch01-1-0.txt:431,搜「不要将 20 的值作为一种知识去记忆」)与第 433 段(text/06-ch01-1-0.txt:433,搜「以简化规则为目标去定义值」)。这两句话是这一章的重心,作者原话是「这不是记忆力的问题,而是想象力的问题」。

  18. 出处:「第1章 0的故事)——无即是有」第 466 段(text/06-ch01-1-0.txt:466,搜「指数法则」)与第 469 段(text/06-ch01-1-0.txt:469,搜「有关指数法」)。原书写明这条法则在第 7 章还会再谈——也就是我们的第 14 章。

  19. 出处:「第1章 0的故事)——无即是有」第 492 段(text/06-ch01-1-0.txt:492,搜「0 在这里起到了标准化的作用」)与第 504 段(text/06-ch01-1-0.txt:504,搜「能够使规则简单化」)。原文说,如果不用 0,就必须特别处理「1」这个数。

  20. 出处:「第1章 0的故事)——无即是有」第 516 段(text/06-ch01-1-0.txt:516,搜「空计」)。原文说,这样一来既能搜索已有的计划,又能搜索「空计划」了;还提到可以把「预计不安排计划」先填进日程占位,和 0 的占位作用相似。

  21. 出处:「第1章 0的故事)——无即是有」第 527 段(text/06-ch01-1-0.txt:527,搜「没有药效」)。原文的设定是:每隔 3 天停用 1 次的吃法很难坚持,于是改成每天都吃,只是每 4 粒里有 1 粒是假胶囊。

  22. 出处:「第1章 0的故事)——无即是有」第 546 段(text/06-ch01-1-0.txt:546,搜「每天服用 1 粒胶囊」)。原文的原话是:这样一来就无须判断「今天是服药日还是停药日」了。

  23. 出处:「第1章 0的故事)——无即是有」第 573 段(text/06-ch01-1-0.txt:573,搜「口服避孕药」)。这是原书的脚注 A:口服避孕药每服用 21 天须停用 7 天,28 粒一组的药片中有 7 粒实际上是毫无药效的安慰剂。

  24. 出处:「第1章 0的故事)——无即是有」第 584 段(text/06-ch01-1-0.txt:584,搜「哪」)。原文的对照是:IIIIIIIIII 和 IIIIIIIIIII 哪个大不能马上得知,而 X 和 XI 就能马上比较得出孰大孰小。

  25. 出处:「第1章 0的故事)——无即是有」第 586 段(text/06-ch01-1-0.txt:586,搜「先贤们创造出了」)。原文说,如果光把 I 排成一排,表示较大的数时就非常不便,因此先贤们创造出了「单元」的概念。

  26. 出处:「第1章 0的故事)——无即是有」第 590 段(text/06-ch01-1-0.txt:590,搜「将大问题分解为小」)。这一句在原文里单独成段,前面一句是「我们可以从中获得哪些启发呢?」

  27. 出处:「第1章 0的故事)——无即是有」第 606 段(text/06-ch01-1-0.txt:606,搜「本书的主旨之一」)与第 607 段(text/06-ch01-1-0.txt:607,搜「请读者朋友们多加留意」)。这是作者的声明,不是我们的概括:原文说这一主旨将会贯穿本书、渗透在各个小节中。

  28. 出处:「第1章 0的故事)——无即是有」第 596 段(text/06-ch01-1-0.txt:596,搜「指数表示法显得异常重要」)与第 597 段(text/06-ch01-1-0.txt:597,搜「指数表示法是着眼于 0 的个」)。原文说,人类要处理的数据呈爆炸性增长,按位计数法也显得力不从心了。

  29. 出处:「第1章 0的故事)——无即是有」第 555 段(text/06-ch01-1-0.txt:555,搜「古埃及人使用 5 进制」)起连着六段,依次讲古埃及、巴比伦、古希腊、玛雅、罗马、印度。

  30. 出处:「第1章 0的故事)——无即是有」第 562 段(text/06-ch01-1-0.txt:562,搜「黏土板的硬件限制」)。注意原文用的是「也许」——这是作者的推断,不是史料结论。同一段还提到现在通用的 1 小时 60 分钟、1 分钟 60 秒源于巴比伦的 60 进制。

  31. 出处:「第1章 0的故事)——无即是有」第 571 段(text/06-ch01-1-0.txt:571,搜「印度人在引进巴比伦的按位计数法」)与第 575 段(text/06-ch01-1-0.txt:575,搜「被称为阿拉伯数字而不是印度」)。原文对名字的来由同样用的是推测语气(「也许是因为」)。