弗雷德里克·波尔中短篇科幻小说集-第34章
按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
不运用一种更简单的方法。这种更简单的体制,其名称就是“二重”或“二进”制。世界上大多数数目现在都正被翻译进这种体制,以求被输入、被消化在电脑中。
二进位制恪守十进位制的所有规则。它属于定位性的;它可以表示任何有限数目;它可以用来加、减、乘、除,求指数,以及人类及全能自动电脑所知的任何代数方程。惟一的差别是:它的基数是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”,这样:
871931
431460
211231
100111
5151
2020
1111
现在,你可能还不知道,你做出的结果是什么样子——伊万肯定也闻所未闻——实际上你已经将两个十进位数转化成二进位数的对等物了。从下向上读,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^124096
1*2^112048
1*2^101024
1*2^9512
1*2^8256
1*2^7128
0*2^60
0*2^50
1*2^416
1*2^38
0*2^20
1*2^12
1*2^01
——————
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;11100;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
依此而行,若要将手指数数结果变为十进制数目,只