SFworld 版 (精华区)

发信人: Swordsp.bbs@bbs.sjtu.edu.cn (网络流·一意专心), 信区: SFworld
标  题: 怎样用手指数数儿/弗雷德里克·波尔
发信站: 饮水思源 (Tue May 27 12:51:00 2003)
转信站: HIT!news.neu.edu.cn!SJTU

  谁都知道,从0到9以10个数目为基础的十进位制由于简洁明快、极为便利等特点,已
取代了其他所有进位制而得到普遍运用。不过,跟许多“尽人皆知”的事物一样,这种看
法包含着一个错误,因为事实并不是这样。
  诚然,十进位制以前的那些方法不可能卷土重来。譬如,我们很少有机会再恢复使用
巴比伦人的六十进位制(以60为基础)——不过由于我们仍将每个小时定为60分钟,将圆
分为360度,所以它并没有废弃不用。以其他数字为基数的进位制也还有存在的迹象。诸如
“斯考尔”(英文音译,意思是“20”)和法语中表示80的“考特——文特”等术语都清
楚地表明以20为基数进位制的存在,而像“一打”“十打”等等这样的术语则明显是从以1
2为基数的进位制中派生出来的词语。
  在科学幻想小说中,绝大多数对未来数目进位制的处理就是以这种12(“十二进位”
)制为基础的,但究竟是由于什么原因很难搞明白。有人争辩说,12数目制简化了书写诸
如1/3和1/6等分数的“十进位的”对等物。不过,对于数目转换的巨大工作来说,这似
乎是一种很小的报偿。若将十二进位制本身的优缺点存而不论的话,就请考虑一下这样一
种变换要付出的代价吧。对一个初学者来说,我们的十二进位货币制每况愈下,必将被一
种新币制所替代,或者是像不列颠笨拙的1s1d那样的时代错乱的产儿一样苟延残喘。而这
样的代价仅仅是开始而已。科学就是度量和解释;没有度量,解释便等于是雾中乱撞;而
度量就是数目。如果要将书写数目的系统改观,你就必须更换几乎所有的有记载的人类知
识的整体——这包括试验室报告和税务回票,价格核算和计时方法,有关介子行为的知识
,以及纽约股票交易所的交易情报等等。
  将世界上的主要文字记载从一种数目制转化为另一种,这样的计划是有碍于思维的。
它的代价不仅无法以亿万美元来计算,而且即使花费人类亿万年时间或许也无法完成。
  既然如此,为什么这种庞大的计划现在还要实施呢?
  简单地讲,其答案是,机器也并不比俄国农夫敏捷多少。
  这并不是说蔑视俄国人,而只是说全能自动电脑跟俄国农夫伊万有许多共同之处——
这些共同之处中有一点就是,在进行十进位乘法和除法时技巧的缺乏。
  让我们看看一个简单的数目——比如,87*93——看看我们,伊万,还有全能自动电脑
是怎么算的。我和你,由于至少在年级制学校读过几年书,就会写下一个如此简洁的运算
式:
    87
   *93
  ————
   261
   783
  ————
   8091
  这并不难算。如果情况不允许,我们也有可能在脑子里算出来。
  但是,伊万却觉得万分艰难,因为他恰恰没有进过等级制学校(全能自动电脑也是如
此)。伊万如果做类似的算题,就会使用一种被称为“俄国”——有时也被称为“半数跟
加倍”(也就是指“调中跟重复”)的计算方法。这样计算时,只需将两列数目一边挨一
边写下来。
  第一列是以原数开始的,这个数字不断被二分,直到无法二分为止。伊万对分数一窍
不通,所以他的算法是把数目去掉——比如,他把12当做25的半数。
  第二列是以另一个数字开始的,以第一列原数二分的次数不断加倍。运算如下:
  87 93
  43 186
  21 372
  10 744
  5 1488
  2 2976
  1 5952
  算到这里之后,伊万看看左边或二分列中,找出偶数。他找到其中有两个——第四个
数10,还有第六个数2。他将跟它们平行的右边(或加倍)列中的数目——也就是说,744
和2976划掉。然后,将右列中余剩的数目加起来:
  93
  186
  372
  1488
  5952
  ——
  8091
  可以看出,在曲曲折折费尽气力之后,伊万大功告成,算出了跟用乘法得出的同样的
答案。
  乍一看来,这并不是什么尽善尽美的方法。如果你想起伊万浑然不知乘法表为何物,
你就会认为此法确实灵巧非凡。而伊万则摇身一变成为聪慧儒雅之辈。
  不过,他并非那么聪慧儒雅,而依然一如愚人。但是,你如果责怪他从数目的二进位
制求取帮助,他就会公开嘲笑你。
  但不管怎样,这便可证明他算出来了。而且全能自动电脑及其电子同胞兄弟们今日也
是这样算的。
  为证实全能自动电脑是怎样运算的,让我们把某些数目拆开,看看其中包括些什么。
  我们的二进位数目——比如说,87——实际上就是一种速记形式,(在这一例中)是8
^1*10^1加7*10^0的“定位”讲法。数字越大,速记越显得短。比如1956,可写作:
  1*10^3=1000
  9*10^2=900
  5*10^1=50
  6*10^0=6
  ——————
      1956
  (为防止你上高中时间过长,10^1就是10的意思;10^0指10除以10,或者是1。无论你
上高中有多长时间,都应该记着10^2的意思是10乘以10,或者是100,如此类推。)
  在许多科学幻想小说中(别处很少见),都说这十进位制属于人类的“天生的”数数
制。因为,你瞧,我们每一个人不都有双手十指吗?我们切不要把它作为理论而纠缠不休
。它如果真是这样,那么当我们的探索火箭发现十二进位的天外地域(或者换言之,当我
们的考古学家发现古巴比伦人比我们现代人多六倍的指头)时,它就可通过大量的机会证
实自身。此外,假若我们认定这个故事天经地义,那么我们便可对全能自动电脑做出这样
的“解释”:由于计算机设有可用来查数的手指,所以不得不运用一种更简单的方法。这
种更简单的体制,其名称就是“二重”或“二进”制。世界上大多数数目现在都正被翻译
进这种体制,以求被输入、被消化在电脑中。
  二进位制恪守十进位制的所有规则。它属于定位性的;它可以表示任何有限数目;它
可以用来加、减、乘、除,求指数,以及人类及全能自动电脑所知的任何代数方程。惟一
的差别是:它的基数是2,不是10。它削去十进位数中的10个基数中的8个——2,3,4,5
,6,7,8和9——只剩下0和1。
  当然了,你是可以这样来算数的。1是一;10是二;11是三;100是四;101是五;110
是六;111是七;1000是八;1001是九;1011是十;如此类推。用它可加可减:
   四  100
  加三  11
  ——————
  等于七 111
  用它可乘可除:
  六   110
  被三除 11
  ——————
  等于二 10
  你可以不费吹灰之力算出来,而无需背诵乘法口诀。这样使你的青春时光自由自在,
在夜晚尽情欣赏棒球比赛,或者访朋问友。
  回过头来再看一下伊万的俄国式乘法;让我们以稍微不同的方式再重新运算一遍。让
我们将两列数目都二分,左右都是这样。我们不再削掉数字,而要在奇数边上注上“1”,
在偶数边写上“0”,这样:
  87 1 93 1
  43 1 46 0
  21 1 23 1
  10 0 11 1
  5 1  5 1
  2 0  2 0
  1 1  1 1
  现在,你可能还不知道,你做出的结果是什么样子——伊万肯定也闻所未闻——实际
上你已经将两个十进位数转化成二进位数的对等物了。从下向上读,1010111是二进位中的
87,1011101是二进位中的93。
  要理解这样做的意思,就要牢记我们是如何将一个十进位数分开的。一个二进位数也
可以分成同样的份数。惟一的区别是,份数是2的乘方相乘,而不是10的乘方相乘。这样的
话,1010111,就是下边说法的速记形式:
  1*2^6=64
  0*2^5=0
  1*2^4=16
  0*2^3=0
  1*2^2=4
  1*2^1=2
  1*2^0=1
  ————
      87
  这就是我们刚才提到的原来的数字形式。
  如果你将87和93这样的数字输入全能自动电脑,它的消化功能就会给搞乱——实际上
,除非这些数字先被消化,否则它就无法消受。所以你必须像我们上面所做的那样,先将
它们转化成二进位数目(“数字”或“数点”)。诸如1010111和1011101这样的二进位数
,全能自动电脑处理得非常好。想做乘法吗?毫无困难。全能自动电脑,依其电子途径,
会如是而行:
     1010111
     *1011101
  ———————
     1011111
        0
    1010111
    1010111
   1010111
      0
  1010111
  ———————
  1111110011011
  这看起来叫人害怕,因为人们对这种东西很不熟悉;但是,得出的结果仍然跟87*93是
一样的;它是下式的速记形式:
  1*2^12 4096
  1*2^11 2048
  1*2^10 1024
  1*2^9   512
  1*2^8   256
  1*2^7   128
  0*2^6     0
  0*2^5     0
  1*2^4    16
  1*2^3     8
  0*2^2     0
  1*2^1     2
  1*2^0     1
  ——————
       8091
  请看,这多么简洁!尽管数目很大,但可以看到处理时又变得多么快捷。
  又比如,加法变成简单的计数(当然是二进位数——1,10,11,100等等的计数。如
果愿意,你可以称之为“一”,一十”,“十一”,以及“一百”等等,并无妨碍)。将
一组数目相加,比如:
   101
   100
   110
   111
  ———
  10110
  你只需简单地数右栏数字(1,10;写下0和1表示);然后数中栏数字,当然要从一开
始算起(1,10,11;写下1和1表示);然后数左栏数字,还是从一开始算起(1,10,11
,100,101;写下1和10表示;写下10)。
  我认为,这跟一个代数式一样容易计算,乘法也差不多是这样。乘法只用写下数目,
将位中的一个适当数目向左移,或者根本无需写下数目(取决于你是用“1”还是“0”乘
那个数字)。因此,此外不外是相加;而相加已如上述,不过是数数而已,完全用不着乘
法表!用不着死记硬背叫人生厌!无怪乎全能自动电脑和伊万都喜爱它!
  如果说这样的二进位制有一个缺陷的话,那就是,它过分简洁明快,所以有些单调乏
味。
  不过,世上的工作都充满着单调乏味的操作过程,但我们又不能不做。我们已经找到
了处理它们的两个好办法——要么把它们交给机器(像全能自动电脑),它们没有能力产
生厌烦情绪;要么看成是一种机械性的常规把它们掌握住。
  我妻子观察出(就像很多妻子有时的观察),不论她提出什么建议做出什么变动都无
所谓,我经常都能找到十数个绝妙的理由使之保持原样。由于人们的保守性,我们大多数
人都会寻找借口反对任何形式的变化(“魔鬼也是自己熟悉的好”)。又由于人也是可塑
的,所以,一旦变化带来报偿,我们不管怎样经常都能逾越我们的异见。
  让我们来看一下换用二进位制可能带来的不便和便利吧。这种情况实际上是引不起争
论的,因为电脑默无声息的票数已以压倒性多数超过了我们人类的票数。但还是让我们来
看一下,对我们这样有厌烦能力、爱吹毛求疵的人类有什么益处。
  不便之处马上就会显现出来,首先是二进位数跟它的十进位数相比好像大而无当。但
是,二进位数实际上并不比十进位数长多少(大约三位),这倒是没有问题的。事实上,
真正大的数目不管在什么进位制中都是根本不易运用的。在目前流行的十进位制中,科技
人员要么用近似值(比如3*10^47)、要么用它们原初的分解因式和指数形式(19^3*641^5
*1861)、要么用其他因数或者速记方式来表示大的数目。甚至在我们每天的报纸上,连标
题也倾向于用6.5百万美元,而不用6,500,000美元。
  至于“大如居室”的数目——啊,我们假设在百万之内——仅仅由于长度这样的问题
似乎并不能对二进法产生否定意见。你可以用20个二进位数点表示那么大的数目(相应的
十进位数是七位数),像这样一个——随便挑选的——101001111001011000010确实有点儿
吓人。但是,它的十进位等数1372866不是很可爱的吗?
  或许数目本身并没有什么,或许我们的阅读方式需要某种改变。比如,1111110011011
这个数目。你在几页前已跟它见过面(可谓故友重逢,那是87同93相乘的结果)。不过,
你自有何曾相识之感,几乎认不出它来。这是不是由于它的认知价值本质是很低的?抑或
是我们在阅读(以及形成书写习惯)这种数字时缺乏训练?
  请记着,在十进位制里,我们是将三个一组隔开,以求简化阅读这样大的数目。比如
说吧,5000000000000本身很难读,而5,000,000,000,000,则一目了然,一下子就可看出
是五个百万平方。我们为什么不给二进位数目找一种类似的成规呢?没有理由拘泥于三个
一组,我们可以选五个一组,这样就可将87*93乘积——亦即8091——的表达法写作111,11
100,11011。
  看,还有点益处。正如平常出现的那种情况,一个方面若稍有进展就可能会给尚未解
决的相关问题带来帮助。这里的相关问题就是心读化的问题。我们都靠嘴来阅读,即使有
时嘴唇肌肉动作完全受到抑制肉眼无法看到,喉管中仍旧在形成我们所阅读——或者思想
的事物的任何声音。诸如***逗号***啊啊逗号**啊**这样一组,简直就无法发音。
  不过,有能力评论一个问题,就等于在解决它的道路上前进了许多。很明显,给二进
位数目赋予更多的发音价值是毫无困难的。
  实际上,这样一种制度已经广泛得到运用。如果你在人声嘈杂的夜晚走进切尔西的爱
尔兰沙洲银行,或许会碰到一两个海运官员在随意闲聊。由于人声鼎沸,他们并不怕人偷
听,也不怕受到干预。如果你恰好听到他们谈话,他们又恰好是无线电报务人员,他们便
会用电码互相交谈。就莫尔斯一点一画相间的电码而言,其中包含有一套非常严格的成规
定则。“嘀”是短线,“嗒”是长线。如果我们就以这套规定而以二进位制代之的话,可
能会丢掉某种便利——无疑一种更为严谨、更为明晰的体制有可能根据基本的发音规则被
创造出来。但是,它却有一个特别的方便:它行之有效。我们用不着对它测验,用不着不
相信它;我们明白它行之有效。它在全世界范围内为无数个无线电发报机工作已有好几个
时代了。
  让我们把“1”的发音当作“嘀”,“0”发作“嗒”。这样,111,11100,11011就变成
嘀嘀嘀 嘀嘀嘀嗒嗒 嘀嘀嗒嘀嘀——
  于是我们就会发现有点奇怪。我们已经承认,二进位制有一种本质上的缺陷,此即它
的数目在原则上没有十进位制精确。
  不过,如果我们要将十进位数8901转换成莫尔斯电码。就必须这样表示:嗒嗒嗒嘀嘀
 嗒嗒嗒嗒嗒 嗒嗒嗒嗒嘀 嘀嗒嗒嗒嗒。也就是,四组,每一组包含五个“位”,总共
有20个“位”。
  但是,正如上面所见到的,它的十进位数对等物只需三组,总共有13个“位”。
  我们所认可的东西显然很不成熟,至少在这个特别的例子中是这样的——而这又绝不
是无关紧要的例子——二进位制可以比十进位制更精确些。
  既然能找到这样一个例子,那就让我鼓起勇气再多找一些吧。
  我大约十岁时,我们小孩喜欢玩一种数数儿游戏在汽车上打发时间。我们会选一个普
通的东西——牛或福特汽车或农场“出卖”的牌子——看看在给定时间内谁数得最多。这
样总可使我们安静相处,在头一两英里平平静静——几乎总是这样。
  麻烦的是,我们是靠手指数数的。这样自然可以顺利数10个数目,还可以顺延到20或
者是30——在用指头数第二圈或者是第三圈时,并不需要多少特别的记忆技巧。不过,当
我们数到高于它们很多的数目时,就要在很大程度上依赖我们各自不同的记忆:我们将10
个数目数了几遍,这样麻烦也就来了。
  自然地,我们是靠十进位制来数的。
  用二进位制能否做得更好些呢?
  将双手的十指在面前伸开(不要因语义而进行诡辩“拇指”是不是一个“指头”——
你明白我的意思),让我们来看看它们能干些什么。
  我们开始时要建立起一套规则。伸出一指是“1”,收回一指为“0”。
  紧握拳头,开始数起:
  伸出右边小指。这是1——二进位和十进位都是这样。
  缩回小指,伸出右边无名指。把它读作10(或者十进位中的二)。
  保持无名指姿势,并将它旁边的小指伸出。读作11(十进位中的三)。
  收回这两个指头,再将右手中指伸出。读作100(二进位)或四(十进位)。
  如此类推,你会发现这样来回伸缩手指需要练习或者天生的灵活性——当然了,除非
你将手指放在桌边上休息,那就无所谓了。
  你的手指确实就可当做“数点”,你是在依靠有效的进位制运用它们的。请注意,你
可以表示从00000,00000(两个手都握着)以至到11111,11111(两手都伸开)之间的任何
数目。下一次你若想将一个可能大的数目——比如,在拥挤堵塞的车道上你前边的车数;
或者,棒球投手投掷的安打数目——你可以试试这种方法。从0数到1023是毫无问题的。确
实,通过显而易见的肢体伸展——比如通过腕、肘等等成功地延伸或收缩的位置的递增—
—你可以很快就算出你从未数到过的数目。
  此外,你什么时候都可以得出要算的总数(比如,这不像是用十进位手指数法,用这
种办法你必须数手指本身才可得出总数),你只需要读下去就行了。假设你同一个朋友一
起外出散步(比方说你丢了计步器),而你的朋友又想知道你在某个给定时问内走了多少
步。你一直数着指头,最后发现自己伸着左手的小指、食指和拇指,右手的拇指和无名指
。依照我们已定的的规则,你数读手指便会发现你已经走了10011,10010步。又据我们的发
音规则,你可以传达出这样的信息:“嘀嗒嗒嘀嘀 嘀嗒嗒嘀嗒”。
  当然了,你朋友可能会是位因循守旧的人,不情愿舍弃十进位制,所以你可能想给他
换算出来。如果你对每个手指所代表的十进位对等数都能记牢的话,那是十分容易的:
  左手
  小指:2^9=512
  无名指:2^8=256
  中指:2^7=128
  食指:2^6=64
  拇指:2^5=32
  右手
  拇指:2^4=16
  食指:2^3=8
  中指:2^2=4
  无名指:2^1=2
  小指:2^0=1
  依此而行,若要将手指数数结果变为十进制数目,只需将上面给出的手指表示的对等
数加起来。上面提到的10011,10010就可解为:
  左小指:512
  左食指: 64
  左拇指: 32
  右拇指: 16
  右无名指:2
  ——————
      626
  这样,就可告诉你朋友,你走了626步。
  像上面所讲,我们已经找到了二进位制的灵活运用实际上比十进位制更为精确这样的
第二个例子——可以看出,是由100这个因素决定的。那么,暂时让我们不计二进位的有限
“不利”,以求对它的某些更为引人注意的特点稍作了解吧。
  我们可以看到,二进位制的算术是算术中最为简便的。这就是它之所以成为惟一适应
全能自动电脑的原因所在;但即使在电子计算机设计的比较简单的层次上,它也显示出优
越之处。比如说,非常精确的微型计算器就可以设计成二进位数程序。所以,至少在做常
规计算时,无需使用齿轮和链条,也无需动力源驱动。如果做十位数目的加法或减法(乘
法和除法比较而言用处较小),你只需要上(“1”)和下(“0”)组成的10个层次的一
组数。当然了,做这么简单的计算,你无需破费钱财去买计算器。你自己就能造一个。或
者变通一下,你可以使用我们刚刚谈到的天生的有10个位置的二位数计算机,而这个天生
的计算机就长在我们手臂上。
  举个例子:你要修房子,手头有13个4*8的镶板,你发现有650平方英尺的墙要补。问
:你还要到外边去买多少块镶板才行?
  这个问题并没有多少难解的地方,暂且先让我们把手指当做计算机,用二进位算术把
它算出来。首先,我们需要先转换成二进位——这只是因为我们出的题用的是十进位。但
如果把换算时间计在答题时间之内,那将不是公平的。
  用二进位,你手头有1101个100*1000块镶板,要补10100,01010平方英尺墙壁。
  很明显,1101*100*1000不过是位置的认定罢了。你让左手代表01101,让右手代表000
00;那就是你所有的镶板平方英尺总数——可以说,是用手表示的。然后,减法①就只需
要考虑接续的数点,从右手数起,以你要减出的写出的数目中的相对应数点减去你手指上
显示的数点,另外负载着“借用的”数目。(你能够记着,当你首次学习十进位减法的规
则时,“负载”要给你多大麻烦?那么,如果这样能使你找到“负载”的诀窍,就不要放
弃二位数的减法。)
  你在手指上一次“写”一个数,就能“写出”结果。也就是说,当你从写下的数目中
减去你右拇指的数点,你右手余下的手指已经表示出答案的最后四个数点。一做到这儿,
答案就可以读出来了。
  按上面所讲,你要买的镶板的平方英尺数是111,01010(我们在做减法时零充塞进左手
数目组以表示所有五个指头的位置)。一个镶板有1,00000平方英尺;111,01010被1,00000
除,明显商是111以及一个分数。但是,你不可能买镶板的一个部分,所以只好将1加在111
上,得出1000。答案便是:你需要买1000个镶板(或者,它的十进位数8)。
  看起来难吗?请再考虑一下相关的困难。可能这毕竟是你第一次做二进位数的题。多
做些练习;如果做上六次,就一点儿也不难了。若做上百次,便会成为半自动性的;若做
上千次呢——
  好了,在你做到千次时先暂停一下。或许这样会使你十分兴奋,原来二进位数的算术
的一些特别例子并不难,即使第一次碰到也很容易给做出来。
  比如,2的乘方的乘法(或除法)就是明例,你只要削去或者是加上零。是的,十进位
制中的10的乘方也会出现类似情况。不过,你在这一点上必须对二进位刮目相看,因为在
任何有限数目系列里2的乘方比10的乘方要多。
  不过,假若你想知道真有容易的例子的话,就请看一下,1023—n这个奇特的问题吧。
  让我们随意将n定为626(这是因为我们刚好要处理一个二进位的等数——当然了,102
3以下任何其他数目也都可以)。请用手指算这个数。先将1023的二进位对等数表示出来:
  11111,11111
  然后,将它划掉,将626的二进位等数在手指上表示出来:
  10011,10010
  不要担心减法,你已经做出来了!逆转指头表示数目的规则:把伸出的手指当做“0”
,收缩的手指当做“1”,便会得出:
   11111,11111
   -10011,10010
  ———————
   01100,01101
  换言之,在二进法中,任何数目n都是1023-n这个数目的“逆转”。不仅仅此例如此,
而且同样的法则也可以体现在511-n,255-n,以及127-n等等例子之中——任何数目其二进
位表示法都属于“普遍性的”,你或许已经认识到了这一点。请一试身手,看看如何吧。
  有人也许会反对说,这样特别的例子是不常见的。这是极为正确的。但是,在十进位
制中,它们不仅仅不常见,而且根本就不存在。而我们不论用什么方法,也都不能把二进
位制中的花样给完全翻出来。实际上,一个人在一个晚上如果找不到二进位的另外一些捷
径又想将二进位法搞得头头是道,那简直是不可能的。
  十进位制呢?
  那种笨拙、散漫、古怪的旧玩意儿!

  ① 10010,01010平方英尺(墙要补)
    -01101,00000平方英尺镶板(现有)
   —————————————————
    00111,01010平方英尺(仍需)

  科幻望远镜 http://sft@chinasf.com 扫校

--
※ 来源:·饮水思源 bbs.sjtu.edu.cn·[FROM: 211.80.51.27]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:205.354毫秒