8.2 数值的 on 和 off 的表达方式
如何在电子计算机中表达数值呢?如前所述,在计算机中所有的数值都用 on 和 off 或 0 和 1 的组合来表达。为了更形象地说明,我们换个角度来思考,该如何用灯泡的点亮与熄灭来表达数值呢?
最简单的方法就是,要表达 3 这个数字时点亮三盏灯。然而在这种方式之下,需要有与希望表达的数字相当数量的灯泡,如果想表达 0 到 999 之间的数,就要准备 999 盏灯泡(图 8.1)。有没有用更少的灯泡数量来表达数字的方式呢?让我们追溯到计算机诞生以前,来看看那时数 字是如何表达的。

图 8.1 点亮与欲表达数字相当数量的灯泡(黑圈表示点亮的灯泡)
数位的发明
在计算机诞生前一千多年,人类发明了数位计算法 3。这种方法通过在每一位上使用 0 到 9 这十个记号中的一个来表达数字。比如表达五百六十七这个数时,考虑到百位是 5,十位是 6,个位是 7,于是把 5、6、7 三个数字并列在一起。按照同样的方法,要表达 0 到 999 之间的数,只需要百位的 9 个、十位的 9 个、个位的 9 个,总共 27 盏灯泡即可(图 8.2)4。通过数位的使用,所需的灯泡数从 999 个骤降至 27 个,那么还有没有能继续减少灯泡数量的方法呢?
3发明于印度,途经阿拉伯国家传到欧洲,因此后来被称为阿拉伯数字。有一本年代可考的著作是花剌子模(al-khwarizmi)于公元 825 年写的《印度数的计算法》,这是关于数位最古老的记载。值得一提的是,al-khwarizmi 这个词在拉丁语里被记为 Algoritmi,这就是现在英语中算法(Algorithm)的词源。
4为什么是 9 个而不是 10 个呢?这是因为,全部灯泡熄灭能表达 0 而全部点亮能表达 9,9 盏灯泡足以表达 10 个数字了。

图 8.2 百位、十位、个位
七段数码管显示器
在计算机诞生之前,人们早就发明了每一数位用七盏灯泡来表达数字的方法。大家肯定都在日常生活中见过它,这就是常使用于电子计算器等领域的显示数字的七段数码管显示器(图 8.3,图 8.4)5。
5七段数码管显示器出现的年代很早,在 1908 年美国的专利申请中能发现相关记录——专利第 974、943 号:http://www.google.com/patents?vid=974943

图 8.3 七段数码管显示器

图 8.4 七段数码管显示器的数值与灯泡的对照关系
通过使用七段数码管显示器,用七盏灯泡就可以表达一位上面的数字,表达三位的数字所需要的灯泡数量变为 21 个。这样一来又减少了 6 个。
算盘
实际上还可以继续节省灯光数量。可以做到只用 5 盏灯泡来表达一位上面的数字,这个实例就是算盘(图 8.5、图 8.6)6。
6顺便提一下,英语中的计算一词 calculate,它的词源是拉丁语中表达算盘中的算珠的词 calculus。Calcium(钙)一词的词源同样来自于此。

图 8.5 算盘

图 8.6 算盘的数值与灯泡的对照关系
算盘是通过算珠的位置来表达信息的。4 个算珠用来表达 0 到 4 的数字,另外一个算珠用来表达是否需要再加上 5 这一信息。在算盘这种表达方式中,用 5 盏灯泡就可以实现一位上数字的表达,表达三位的数字所需要的灯泡数量变为 15 个。这样又进一步减少了 6 个。
