2.4 用开关来表示二进制数字
自从学会了二进制之后,你的运算部件制造计划又开始缓慢地向前推进。当然,在这个过程中首要的问题还是解决如何方便地用电来表示具体的数。
由于电子专家的权威性,更由于你是个聪明人,在那次和专家分别的时候你已经读懂了他的潜台词:自行其是只会给自己带来烦恼,使用二进制应该是个明智的选择。所以,尽管眼下你还有些摸不着头脑,不知道二进制会给你的运算部件制造计划带来什么,但是这总比没有任何现成的思路强。很快,你终于有了一些头绪。
你发现因为二进制数只有0和1两个符号,所以马上想到这可以用开关来实现:当开关断开时,电流被切断,这代表0;当开关接通时,电路中有电流通过,这代表1,如图2.16所示。
图2.16 开关的通断对应着1和0
另外一种可行的方案则与此相反,用开关断开表示1,而开关接通表示0。但是对大多数人(包括我自己)来说,这会有些别扭,不太容易接受,毕竟我们已经习惯了把“没有”看成是0,所以我们不使用这种方案,尽管我们已经说过,它实际上是可行的。
因为在大多数情况下一个真正的二进制数不仅仅只有一个0或者一个1,它可能包含了很多比特,是一连串的0或1,所以要表示一个真正的二进制数,比如101(也就是十进制的5),就需要一排开关,每一个开关对应一个比特(2.17)。
图2.17 通过使用多个开关、可以代表任何二进制数
这个创意非常新颖,也非常重要,所以我们应该立即将它应用到我们正在努力制造的运算部件中,如图2.18所示。尽管刚看到这幅图时很多人会出现精神恍惚的症状,但是我相信只要稍做解释大家不用吃药就能很快得到缓解,并能非常明白这个图的意思。
图2.18 理想中的二进制运算部件
图中的灰色方框通常代表一个具有某种功能的电路,在这里它代表的是我们一直努力想要制造的运算部件。之所以这样做,是因为我们正在讨论如何用开关来表示数,这是我们当前关注的焦点。况且,哎呀,现在还不知道它的内部到底如何构造,用一个方框来代表真是最好不过了。
这个运算部件的左边和下面各有5个开关,分别用于输入两个参与运算的二进制数,这意味着它们都是5比特的。就像前面已经讲过的那样,要表示一个二进制数,只需要接通或者断开它们中的一个或多个。那么为什么在这里非得是两个5比特二进制数呢?这没有什么特别的原因,只是因为我决定画这幅图时的一闪念。换句话说,这只是一个例子。你可以使它有2比特,或者20比特,比特越多,需要的电线和开关就越多,但是它能计算的数就越大,难道不是吗?
这个图充分表明了二进制数之所以在电的世界里受到欢迎的原因,我相信你对它也是非常欢迎的。要在以前,你必须制作一大堆电路,为的是生成不同的电压,这还不算,为了知道生成的电压够不够数,你还得拿着电压表一遍一遍地挨个儿测量,而获得这点成就感所付出的却是满头大汗和筋疲力尽。但是现在,你只需要准备一个合适的电源和为数不多的开关就足够了。至于精度,在这里有电表示1,没有电表示0,使用多大的电压都无所谓,只要不会烧坏零件或者电着自己,你认为在这里精度会是个问题吗?
除此之外,还有更令人感到振奋的。在前面的设计过程中,由于忙着解决如何将数送到运算部件里去,我们还没有认真研究过另外一个同样很重要的问题,那就是当运算结果出来之后我们怎样知道它是不是正确,是否是我们真正想要的。现在,由于采用了二进制,这个问题也迎刃而解了。方法出奇的简单,因为运算部件是以二进制的方式工作的,它送出来的运算结果自然也是用一排导线表示的二进制数。这样,我们可以把小灯泡接在每一根输出上(让它费点儿电,毕竟人们常说只有付出才能得到回报),以此来显示这些输出的比特到底是0还是1(图2.19)。
图2.19 通过使灯泡发光、可以直观地看到运算结果
这个办法真好,而且特别有意思,它使得结果能以可视的形式直接被我们用眼睛观察到。当某根导线上没有电时,与它相连的灯泡不亮,代表这一比特是0;当灯泡亮时,表明这一比特是1。如果依次记下这些比特并将其换算成十进制,我们就能知道结果到底是几,这真是再好不过了。
看起来二进制与电学还真有着不解之缘,好像它是专门为发明电子计算机而量身定做的。
遗憾的是这两者之间原本就毫无关联。二进制创建的时间大约在1672—1676年,发明它的是德国人莱布尼茨。莱布尼茨是伟大的哲学家和数学家,他不但是数理逻辑的开创者(往后我们还要提到这门学问),还是与牛顿齐名的数学家,他们俩相互独立地创建了微积分。尽管现在公认的是莱布尼茨使用的微积分符号要优于牛顿的,而且一直到今天都在使用,但他们在是谁先发明了微积分的问题上曾经争吵不休,甚至波及整个科学界,使英国和欧洲大陆的科学先驱们在很长一段时间里激烈交锋、势不两立。总之双方都为这事儿很动感情。不过在另外一些场合,莱布尼茨倒是很欣赏牛顿,曾经高度称赞牛顿的数学成就“比得上在他之前所有成就的总和”。除此之外,莱布尼茨还是个百科全书式的杰出学者,研究领域遍及数学、物理学、力学、逻辑学、生物学、化学、地理学、解剖学、动物学、植物学、气体学、航海学、地质学、语言学、法学、哲学、历史和外交,等等(哎呀,光是把它们念一遍就让我喘不过气来)。
莱布尼茨的晚年趋于保守和无所作为,沉迷于神学和唱赞歌。另外,他一生都没有结婚,过了一辈子独身的生活。好在人们只是景仰他的成就,在婚姻方面倒是没有人愿意效仿他,否则科学发展史就成了名副其实的“断代史”了。
尽管莱布尼茨发明了二进制,但这并非是由于他认识到二进制对于计算机来说是多么重要。事实上,尽管他的确曾经热衷于研究如何制造计算机,而且也确实发明了一台机械计算机,但那台机器却根本不使用二进制工作,也和二进制毫不相干。具有讽刺意味的是,他发明的二进制现在却支配着全世界不计其数的计算机的运行,如果他能够活着看到这一切,不知道会作何感想。
多好的二进制、多好的设计啊!晚上躺在床上你都在想:我怎么会有这么好的设计呢!感动得你都想哭。当然,这可能有点儿夸张,不过实事求是地说,这一次的设计的确已经无可挑剔了,至少从技术难度上来说是完全可行的。所以在图纸出来之后,你就开始着手构造这个运算部件内部的电路了。