www.fanchuanbook.com “我们现在是这样计数的,”张三说,“邻居李四前天来向我借米,我借给他了,帐在这里。”说着他从一堆绳子里拿出一根来,指着上面的疙瘩,又拿起一只碗向我们晃了晃。
www.fanchuanbook.com “他们是在用绳结计数,”董宇解释说,“绳子上打了5个结,他的意思是李四借了他5碗米。当然,如果米还了,他会把这些结解开。我认为我们应该帮帮他们,否则再这样下去,他就不用再呆在这里,而是到武汉这样的大城市开绳子铺了。”
帮助人的确能够令人感到快乐,既然我们有能力做到这些,同时又能融入他们中间,那何乐而不为呢!
“野人”们的悟性真好啊,我只花了很少的时间就让他们明白了0和1。我在地上画一个圆圈,对他们说它的意思是“什么也没有”;然后又画一竖,说它代表的是一碗米。
这是一个非常好的开端,按照我的想法,用不了多久,“野人”们就能学会我们的计数方法。可是当我指着两碗米,在地上画了个“2”的时候,他们不干了。他们七嘴八舌,说是照这样下去,他们将不得不记住比碗里面的米粒还要多的符号。
“用不了那么多,你们只需要记住很少的几个就行了。”我对他们说道。同时挥挥手企图让他们平静下来,但根本无济于事。这时董宇将我拉到一边,对我说:“你不要这样,这没有用。他们根本不会听你的,他们都是刚刚从蒙昧中走出来的人。他们不是已经知道0和1了吗?那么你就用这两样东西帮他们吧,我认为这应该是行得通的。”
这的确是行得通的。在经过充分准备之后,第二天我又满怀信心地来到他们中间。
“画一个圈,这代表什么也没有。这个数发‘零’音。”我说。然后我又拿出一碗米,同时在地上画了一条竖线:“这个叫做‘幺’,你们也照我的发音念一遍吧!”其实我知道这些知识他们昨天就懂了。
随后我又拿出一碗米,指着两碗米对他们说:“现在已经比‘幺’碗米多了,按理说应该使用一个新的符号来表示,但是你们不干。既然如此,我们就用一竖和一个圈来代表吧,这个读作‘幺零’,如果再多一碗,就画两条竖,读作‘幺幺’……”。
整整一天,我都在竭尽全力地使他们明白这种计数方法,最要命的是根本不能按照我们平时的概念去向他们解释这一切,这让我感到非常费劲儿。为了能说得明白,我把这一天教给他们的内容都画在图2.5上了。
图2.5

本来我以为他们需要一段时间才能消化我所教的内容,所以第二天我没有找他们,并准备到大九湖游玩一番。出乎我意料的是还没等出门,“野人”张三就大清早来找我们,说是他们所有的人已经学会了这种计数方法。
“文明人,”他说,“我,以及所有的人,都向你表示感谢,我们已经掌握了这门学问的一些规律。”
“是吗?你倒给我讲讲。”我很不以为然地说道,心想这些人真是不知天高地厚。
“其实我也讲不出什么道理来,”他说,“这门学问的关键之处在于用你所教的两个符号来组合数的时候,相互之间不能重复,而且需要遵照一定的顺序和规则。”
“那么这是几棵树?”我指着面前的几棵树问道。要知道,在神农架这个地方,唯一极大丰富的就是树了。
图2.6

他认真地数了数,然后说:“哦,那是幺零零零棵树。这很容易,要知道,昨晚我们已经统计出整个部落里的人数是幺幺零零零幺零幺幺。”
“真是超现实主义!”我惊讶地说,并肃然起敬:“在我们那里,这叫做二进制,是非常难懂的概念。你们是我所见过的最聪明的人!”
张三有些不好意思,他不停地说些感激的话,并告诉我说邻居李四已经将借他的幺零幺碗米还了。
从神农架回来后我深有感触,并开始在某些层面上重新思考计数的问题。我发现二进制也是一种很好的数制,尽管我们通常觉得它很不直观而且难以使用,这主要是由于我们在生活中并不使用它,或者更准确地说,大人和老师们并没有让我们从小就接触它、习惯它。二进制很不直观,对于象1001111001这样一个二进制数,无论你多看它几眼,除了一脸茫然之外,肯定不会有心领神会的直观感受。但是当你看到十进制数时,比如1949,只需要简单地瞥一眼,你立即会知道这个数既不大,也不是特别小,快接近两千了。而且还会产生一大堆有关这个数联想,会想到这个数如果是一个年份的话,它正好是中华人民共和国成立的那一年。
说到这里我想起一件有趣的事儿。有一次好友周世峰和张勇约我星期天出去喝酒,这次聚餐本来很好,可是当他们在饭店里坐定并点完酒菜之后却接到我有可能去得很晚的电话。当他们得知我要晚去50分钟的理由竟是要办一些鸡毛蒜皮的“紧急事务”时,周世峰那厮气得几乎冒烟。也亏得通信技术如此发达,我都能从压抑的声调里听出他是如何极力克制自己愤怒的情绪。他的情绪之所以变得如此恶劣,是因为“50”这个数字是他熟悉的,当我告诉他这个数时,他的大脑会以极短的时间判断出这是否合乎常理。但如果我告诉他的是晚来幺幺零零幺零分钟,他就不会这么快生气了(是的,到现在我都后悔为什么当时不这样告诉他)。注意,大脑差不多也是机器,当这个机器接收到它不熟悉的数据时,它就不能按正常的方式工作了。数制如此,人类的语言也是这样,我始终觉得汉语很好听,甚至可以说是世界上最好听的发音。当我听其他国家的语言时,我觉得他们的发音特别奇怪,甚至有点好笑。但是我也知道,既然我都能够这样想,其他国家的人听到我们的汉语时又会怎样想呢?
二进制是一种独立的数制,尽管我们通常借鉴十进制的两个符号“0”和“1”来表示它,但这不是必须的。换句话说,如果我们要用二进制数来表示世界最高峰——珠穆朗玛峰的高度8844米(精确的数值是8844.43米,由国家权威部门经实测后公布于2005年10月9日),我们可以表示成:

不用你说,这当然是非常笨拙和可笑的。如果想要简单一点,下面的符号也是可行的:
│○○○│○│○○○││○○
但是,正如你所看到的,这些表示方法远没有“10001010001100”这样的表示方法来得方便。
2.4 比特
十进制的历史非常悠久,作为一种简洁的计数方法,它就象感冒一样,很快通过贸易和战争传到西方,并经由他们传遍了整个世界。相比之下,二进制的发明则出现得非常晚,时间是19世纪,以后我们还要详细说说这事儿。因为机器不象人类的大脑那样复杂和灵活,要控制它们,简单才是最有效的。
在平时的工作中,即使是资深的程序员也不一定经常与二进制打交道,但是从方便的角度,记住一些常见的二进制数还是很有必要的,否则会让某些人觉得你不是那么“专业”。比如(用十进制的话来说)1到15、255、65535等。
十进制数具有不同的数位,分别是个位、十位、百位、千位,等等,但是在二进制里通常不需要这样细致的划分,因为二进制数一般都很长,为一个只在技术领域里有限使用的数制创造太多的规则实在没有太大必要,也很麻烦。对于单个的二进制数位,它们都只有一个称呼“比特”,每个比特具有两个可能的值:0或者1。
图2.15

最早,二进制中的每一位在英语里被表示成Binarydigit,意思是“二进制数位”,或者“二进制数字”。但是很快人们就看清了,Binary digit这个术语将随着计算机技术的快速发展而越来越多地被人们使用。这使得有个具有远见而且好事的统计学家图凯希望为它起一个更加短小的名称以方便交谈和书写。Tukey扮演着二十世纪中期统计学发展的关键人物,他生于1915年,是家里的独子,从小在家接受教育直到后来进入大学研读数学和化学,一生成就非凡且荣获很多奖项。他一开始想到的是bigit和binit,但最终他选择使用bit这个单词,并由于它的短小和亲和性而广为接受。这还不算,一些更懒惰的聪明人干脆直接将它写作“b”而不是“bit”。当它传入中国的时候,它被依照发音翻译成“比特”。图2.15中的二进制数共有7位,可以记作7比特、7bit或者7b,具体怎么写随你的便。
www.fanchuanbook.com