进位制和记数法

进位制和记数法

1 中国劳动人民,在长期的实践中,创造与发展了记数、分数、小数、正负数以及无限逼近任一实数的办法,实质上达到了整个实数系统的完成。特别是自古就有了完美的 10 进位位值制的记数法。这是中国的独特创造,是世界其他古代民族都没有的。这一创造对世界文化贡献之大,如果不能与火的发明相比,也是可以与火药、指南针、印刷术一类发明相媲美的。

十进制记数和阿拉伯数字

中国在商代就已经采用十进制记数法,是最早采用十进制记数的文明。印度人在此基础上发明了“零”和今天普遍采用的数字记号。这是两个东方古国对世界文明重要的贡献。今天我们普遍采用 0 1 2 3 4 5 6 7 8 9 这十个数字进行记数,数字在个位、十位、百位或千位则表示不同的位值。值得一提的是,在人类文明的早期,十进制并不是理所当然的。古巴比伦人虽然有位值的概念,但采用了六十进制。古希腊和古罗马人采用了五进制和累加法表示数字。古埃及人用有限的几个象形符号来表示不同的数字,在表示较多数量时采用累加法。

甲骨文“三万”

图 2 给出了除中国之外,世界各主要文明在发展过程中形成的记数符号。最后一行就是我们今天使用的“阿拉伯数字”,这是先由印度人发明,再经阿拉伯人传播到欧洲的数字符号。这种符号成为今天世界各地统一使用的符号,是不同语言文化民族之间的联系纽带。

各个文明的记数符号:从上至下分别是古巴比伦、古埃及、古玛雅、希腊、罗马、印度、阿拉伯和印度-阿拉伯数字 摘录自 (Billstein 2013) - page 56 “Numerations Systems - Table I”

十进制记数系统的要点

示例: 将十进制数 \(5643\) 表示成 数字乘以 \(10\) 的方幂的形式。

数字处于不同的位置,代表的含义不同。千位的 \(5\) 代表 \(5000\) ,百位的 \(6\) 代表 \(600\)

\[5643=5\times10^3+6\times10^2+4\times10^1+3\times10^0\]

图 3 标记了十进制记数法的位值。


十进制记数法有一些特殊的结论,可以用于计算或验算,也是小学数学考试中喜闻乐见的题目类型。由于并非本章讨论的重点,所以只列出一个性质供读者参考:

十进制数除以 \(9\) 的余数

十进制数如果能被 \(9\) 整除,那么它的各位数字之和也能被 \(9\) 整除。更进一步地说,一个十进制数除以 \(9\) 的余数等于其各位数字之和除以 \(9\) 的余数。

示例: 计算 \(121\) 除以 \(9\) 的余数。

直接计算余数只需要将 \(121\) 的各位数字相加:\(1+2+1=4\) ,就可以得到余数 \(4\)

数学家用以下记号表示两个数除以 9 的余数相同:\[121\equiv1+2+1\equiv4 \mod 9\]

上述计算的正确性容易验算: \[121\div9=13 \quad......\quad 4\]


示例: 计算 \(123456789\) 除以 \(9\) 的余数。

将各位数字相加: \[1+2+3+4+5+6+7+8+9\equiv45\] \(45\)\(9\) 的倍数,所以 \(123456789\) 能够被 \(9\) 整除,余数为 \(0\)


思考与讨论

根据以上推理过程,再思考思考:

思考与讨论

外星球的八进制

我们这个星球的人们最终选择了十进制作为日常生活中的记数手段。如果另外星球的智慧生物有八根手指,那么他们很有可能会选用八进制作为他们的基础进位制,即“逢八进一”。他们可能会如图 4 所示记数。

八进制记数(黑色圆点代表八个白色圆点)

当然更加靠谱的方法是也采用和我们星球类似的阿拉伯数字系统。如果也采用我们的数字符号,他们只需要 0-7 这八个数字。如图 5 所示。

八进制的阿拉伯数字符号记数

这个星球的小学生也学习加法。他们的加法表和乘法表如表 6 所示。请你将其中尚未计算完成的部分补充完整。


--------------------------`加法表`--------------------------
1+1= 2
1+2= 3  2+2= 4
1+3= 4  2+3= 5  3+3= 6
1+4= 5  2+4= 6  3+4= 7  4+4=10
1+5= 6  2+5= 7  3+5=10  4+5=11  5+5=12
1+6= 7  2+6=10  3+6=11  4+6=12  5+6=13  6+6=14
1+7=10  2+7=11  3+7=12  4+7=13  5+7=14  6+7=15  7+7=16
--------------------------`乘法表`--------------------------
1x1=1
1x2=2   2x2= 4
1x3=3   2x3= 6  3x3=
1x4=4   2x4=10  3x4=    4x4=
1x5=5   2x5=12  3x5=17  4x5=24  5x5=
1x6=6   2x6=14  3x6=22  4x6=30  5x6=    6x6=
1x7=7   2x7=16  3x7=25  4x7=    5x7=    6x7=    7x7=61
八进制加法表和乘法表

学习其它进位制的意义

示例: 计算八进制加法 \(34+56\)

用竖式计算八进制加法
计算过程如图 7 所示,注意在计算的过程中进位是“逢八进一”。计算结果是 \(34_8+56_8=112_8\)


示例: 计算八进制的乘法 \(34\times56\)

用竖式计算八进制乘法
计算过程如图 8 所示,个位数的乘法可以在表 中查表得到。计算结果是 \(34_8\times56_8=2410_8\)


思考与讨论

示例: 计算八进制的加法 \(56+78\)

示例: 计算八进制的乘法 \(56\times78\)

进位制转换

同样多的数量可以用不同的进位制记数,如图 9 所示。如何在进位制之间进行转换呢?因为我们习惯于十进制,所以首先学习利用以十进制为基础的计算方法。在下文中,我们首先讨论从其它进位制向十进制的转换,再讨论从十进制向其它进位制的转换。最终我们将抛弃十进制的特殊地位,讨论各种进位制的转换问题。

用不同的进位制表示同样的数量

从八进制转换为十进制

用石头子记数的方法,可以很容易理解进位制的转换。

用石头子完成从八进制向十进制的转换

八进制到十进制

以八进制数 \(21_8\) 为例,这个转换的过程如图 10 所示。如果以十进制记数法进行计算,那么就无需特别地去做“逢十进一”操作,计算过程如下所示: \[21_8=2_{10}\times8_{10}+1_{10}=17_{10}\]

示例: 将八进制数 \(1234_8\) 转换为十进制数。

根据不同位置数字的含义,可以列出以下算式: \[1\times8^3+2\times8^2+3\times8+4=668_{10}\]


Windows/Mac/Linux 等操作系统自带的计算器可以完成八进制到十进制的转换。在练习中,你可以使用这种手段进行验算。

使用左侧 ID 号访问演示视频。

从十进制转换为八进制

使用除法来转换十进制数字为其它进位制。例如十进制数字 \(17_{10}\)\(8\)\(1\) 组,能分出 \(2\) 组还余 \(1\) 个。也就是 \(17_{10}=21_8\)

十进制到八进制

示例: 将十进制数 \(668_{10}\) 转换为八进制数。

解法一 从高位至低位,将 \(668\) 拆解成 \(8\) 的幂次之和。

因此 \(668_{10}=1\times8^3+2*8^2+3*8+4=1234_8\)


解法二\(668\) 不断除以 \(8\) , 所得的余数序列就是八进制从低位到高位的排序。如图 12 所示的余数排列起来就是转换后的八进制数:\[668_{10}=1234_8\]


用连续除法进行转换

思考与讨论

二进制

二进制在信息时代发挥着至关重要的作用。二进制只有两个符号, \(0\)\(1\) 。现代的二进制是法国数学家莱布尼茨发明的,相传他受到了中国八卦图的启发。

二进制和十进制的对应

二进制与十进制的转换

使用类似的 节的方法,可以很容易地进行二进制记数和十进制记数的转换。

示例: 将二进制数 \(110101_2\) 转换为十进制记数。 \[110101_2 = 1\times2^5+1\times2^2+1\times2^2+1=32+16++4+1=53_{10}\]


示例: 将十进制数 \(53_{10}\) 转换为二进制记数。 \[53=32+16+3+1=110101_2\]

也可以使用连续的带余除法完成转换,如图 14 所示,可以得到相同的结果。


用连续除法进行转换

用二进制计算

二进制的基本计算规则很简单:

计算 \(1101_2\times1011_2\)

二进制乘法


古代记数法

正字记数法 (Tally Numeration System)

人类最初的计数是使用石头、木棍或者刻道。摘了多少苹果,就在洞穴的石壁上划多少道。划道多了不好清点,就五个一组,如图 16 所示。

在洞穴上划道

这种记数法在今天也很常见,我们选举班干部时,就经常使用“画正字”的方法统计选票。

画正字

这种记数方法的好处是无需改变已有的记号就可以不断地递增记数。想象一下,如果你是原始人,在洞穴上刻阿拉伯数字,不断地跟随增加的苹果数简直是一场灾难。

古埃及记数法

古埃及文明在公元前 3400 年发展出自己的记数法。古埃及人用单独的符号表示整十整百,如图 18 所示,但依然用划道表示 1 到 9 。较复杂的多位数则通过重复这些符号来表示。

古埃及数字
古埃及石刻壁画

举例来说,埃及卡纳克神庙中的一个石刻如图 20 所示,它表示 \(4622\) 这一数字。可以发现,古埃及人并没有发明类似 \(1-9\) 的数字,相反他们把不同的记号用于表示不同的位值。这种计数方法使用起来其实很繁琐。

古埃及数字 4622

扩展学习:古埃及人创造了灿烂的文明,观看左侧 ID 所示视频,了解古埃及人的数学。

思考与讨论

古巴比伦记数法

古巴比伦人采用六十进制。 \(1-59\)\(59\) 个数字由两个符号构成。\(\blacktriangledown\) 代表 \(1\)\(<\) 代表 \(10\)

巴比伦数字:图片来源 Josell7-File:Babylonian_numerals.jpg,CC BY-SA 4.0,
巴比伦记数法

图 21 是古巴比伦人的记数法。古巴比伦人对于 \(60\) 以上的数,采用位置计数。例如:\(67_{10}=1\times60+7\) ,巴比伦人会先用表示 \(1\) 的符号在高位标记,然后用表示 \(7\) 的符号在低位标记,如图 所示。

示例: 将 \(524551_{10}\) 转化为巴比伦记数符号。

: 首先先用连续除法将其转换为 60 进制记数:

巴比伦记数法

再将其制作成巴比伦符号:

巴比伦记数法


古代巴比伦的数学成就

古巴比伦人取得了灿烂的数学成就,图 25 所示的 Plimpton 322 号石碑是目前发现的最古老的三角函数表。对这块有着 3700 年历史的石碑的研究表明,古巴比伦人对三角形(尤其是直角三角形)的研究比希腊人早了 1000 多年,那时中国还处在传说的夏朝。这些古老的数学知识一直被隐藏着,直到最近才被发现。

观看左侧 ID 所示视频,了解古巴比伦人的数学。

古巴比伦泥板

思考与讨论

古玛雅记数法

玛雅文明使用的二十进制记数系统。玛雅数字的 1 到 19 使用点和横线表示。点表示 1 ,横线表示 5 。玛雅文明使用贝壳代表 0 ,这在记数系统中非常关键。在我们之前讲的古埃及文明和古巴比伦文明是没有符号 0 的,在涉及某些数字时会非常不便。

玛雅记数法

\(2005_{10}\) 转化为玛雅记数符号。

使用连续除法将其转换为 20 进制记数: \[2005=5\times20^2+0\times20+5\]

再将其转换为玛雅记数符号:

玛雅数字 2005


罗马记数法

罗马记数法从公元前 3 世纪就开始欧洲使用,直到今天依然应用广泛,如图 28 所示是一些常见的罗马数字的应用场景。

罗马数字的应用

罗马数字的基本形式是把这些字母代表的数字加起来。例如 MDCLXVI 代表 \(1000+500+100+50+10+1=1666\) , CCCXXVIII 代表 \(100+100+200+10+10+5+1+1+1=328\)

为了避免连续四个同样的字符的冗赘,在中世纪时罗马人引入了减性符号,如果一个比较小的符号在大符号左侧,那么代表的数字是二者相减。比如 IV 代表 \(5-1=4\) , XC 则代表 \(100-10=90\)

罗马数字的基本记号

示例: 罗马数字 XCI 和 LXXIX 对应的阿拉伯数字是什么?

  1. XC 代表 \(90\) , I 代表 \(1\) 。综上, XCI 代表 \(91\)

  2. LXXX 代表 \(80\) , IX 代表 \(9\) 。 综上, LXXIX 代表 \(89\)


为了表示大数字,罗马人用上划线表示乘以 1000 。例如 \(\rm \overline{V}\) 表示 \(5\times1000=5000\)\(\rm \overline{\overline{V}}\) 则表示 \(5\times1000\times1000=5,000,000\)

示例: 罗马数字 \(\rm \overline{\overline{\overline{CXI}}}\)\(\rm \overline{D}CLIX\) 对应的阿拉伯数字是什么?

  1. \(\rm \overline{\overline{\overline{CXI}}}\) 表示 \(111\times1000^3=111,000,000,000\)

  2. \(\rm \overline{D}CLIX=\overbrace{(500\times1000)}^{\overline{D}}+\overbrace{(100+50)}^{CL}+\overbrace{(10-1)}^{IX}=500,159\)


思考与讨论

练习: 将 \(3282_{10}\) 写成展开式。

练习: 计算 \(1234567_{10}\) 除以 3 的余数。

练习: 计算下列八进制算式:

  1. \(67_8+45_8\) b. \(67_8\times45_8\)

练习: 八进制和十进制的互相转换:

练习: 计算下列二进制算式:

练习: 二进制和十进制的互相转换:

练习: 利用古埃及记数法解决以下问题:

古埃及文字

参考文献

Billstein, Rick. 2013. Problem Solving Approach to Mathematics for Elementary School Teachers, a: Pearson New International Edition. Pearson.

吴文俊. 1996. 吴文俊论数学机械化. 山东: 山东教育出版署.


  1. (吴文俊 1996) - page 76 ↩︎