穿越计算机的迷雾(第2版)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

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年,发明它的是德国人莱布尼茨。莱布尼茨是伟大的哲学家和数学家,他不但是数理逻辑的开创者(往后我们还要提到这门学问),还是与牛顿齐名的数学家,他们俩相互独立地创建了微积分。

除此之外,莱布尼茨还是个百科全书式的杰出学者,研究领域遍及数学、物理学、力学、逻辑学、生物学、化学、地理学、解剖学、动物学、植物学、气体学、航海学、地质学、语言学、法学、哲学、历史和外交等(哎呀,光是把它们念一遍就让我喘不过气来)。

尽管莱布尼茨发明了二进制,但这并非是由于他认识到二进制对于计算机来说是多么重要。事实上,尽管他的确曾经热衷于研究如何制造计算机,而且也确实发明了一台机械计算机,但那台机器却根本不使用二进制工作,也和二进制毫不相干。具有讽刺意味的是,他发明的二进制现在却支配着全世界不计其数的计算机的运行,如果他能够活着看到这一切,不知道会作何感想。

多好的二进制、多好的设计啊!晚上躺在床上你都在想:我怎么会有这么好的设计呢!实事求是地说,这一次的设计的确已经无可挑剔了,至少从技术难度上来说是完全可行的。所以在图纸出来之后,你就开始着手构造这个运算部件内部的电路了。