十进制数具有不同的数位,分别是个位、十位、百位、千位,等等,但是在二进制里通常不需要这样细致的划分,因为二进制数一般都很长,为一个只在技术领域里有限使用的数制创造太多的规则实在没有太大必要,也很麻烦。对于单个的二进制数位,它们都只有一个称呼“比特”,每个比特具有两个可能的值:0或者1。
图2.15
日期:2009-02-05 23:04:35
最早,二进制中的每一位在英语里被表示成Binarydigit,意思是“二进制数位”,或者“二进制数字”。但是很快人们就看清了,Binary digit这个术语将随着计算机技术的快速发展而越来越多地被人们使用。这使得有个具有远见而且好事的统计学家图凯希望为它起一个更加短小的名称以方便交谈和书写。Tukey扮演着二十世纪中期统计学发展的关键人物,他生于1915年,是家里的独子,从小在家接受教育直到后来进入大学研读数学和化学,一生成就非凡且荣获很多奖项。他一开始想到的是bigit和binit,但最终他选择使用bit这个单词,并由于它的短小和亲和性而广为接受。这还不算,一些更懒惰的聪明人干脆直接将它写作“b”而不是“bit”。当它传入中国的时候,它被依照发音翻译成“比特”。图2.15中的二进制数共有7位,可以记作7比特、7bit或者7b,具体怎么写随你的便。
“比特”是计算机专业里使用得比较多的术语之一,差不多在每本专业书籍里都有可能重复出现。相比之下,它的长辈“二进制”这个术语则用得越来越少。
关于二进制我们最后想说的是它的小数表示方法。象十进制一样,二进制也是可以表示小数的。如果不是这样的话,现在的计算机也许只有在梦中才会出现。毕竟,小数是很常见的,即使是到菜市场买菜,菜钱也通常都是有零有整的。你要是好好说,这零头就抹了,要是你唧唧歪歪的,这菜估计就买不成了。
二进制小数在写法上与十进制没有什么区别,都是在整数部分和小数部分之间写一个圆点,象这样:
11011001.101011
要将二进制小数转换成十进制,或者把十进制转换成二进制,整数部分和小数部分都要分开进行,然后分别写在小数点的左边和右边。具体如何进行已经超出了本书的话题范围。“学计算机还要熟悉如何把一个十进制数换算成二进制?”经常有人如此质疑,语气还很严厉。不过他们的话也不是没有道理。即使是不知道如何在这两种数制之间进行换算,也不影响你继续往下阅读本书。当然,如果你对此有兴趣,希望搞清楚它们之间换算的方法,可以参阅附录Ⅰ。要是你不介意,这一章的内容就到此为止。
日期:2009-02-06 00:59:49
我就说不该把这件事(把书的内容贴在天涯上)告诉周世峰,这不,很快就来捣乱了,还整一篇小文。不过这厮以前只看过前言部分,正文还真没有给他看过。惹大家见笑了。
-------------------------------------------
致 脸羞的红通通:
兄台教训得是,我这个人,与世无争,喜欢闲云野鹤,看上去挺斯文,实则“斯文败类”(反正有人是这么说的)。在电脑版块口出不雅之词,有失体面。得罪了。改是很难了,性格使然,但是鄙人一定会多加注意。
日期:2009-02-06 19:23:47
第三章开关与二进制
自从学会了二进制之后,你的运算部件制造计划又开始缓慢地向前推进。当然,在这个过程中首要的问题还是解决如何方便地用电来表示具体的数。
由于电子专家的权威性,更由于你是个聪明人,在那次和专家分别的时候你已经读懂了他的潜台词:自行其是只会给自己带来烦恼,使用二进制应该是个明智的选择。所以,尽管眼下你还有些摸不着头脑,不知道二进制会给你的运算部件制造计划带来什么,但是这总比没有任何现成的思路强。很快,你终于有了一些头绪。
日期:2009-02-06 19:25:28
3.1 二进制仙境
你发现因为二进制数只有0和1两个符号,所以马上想到这可以用开关来实现:当开关断开时,电流被切断,这代表0;当开关接通时,电路中有电流通过,这代表1,如图3.1所示:
图3.1
日期:2009-02-06 19:26:50
另外一种可行的方案则与此相反,用开关断开表示1,而开关接通表示0。但是对大多数人(包括我自己)来说,这会有些别扭,不太容易接受,毕竟我们已经习惯了把“没有”看成是0,所以我们不使用这种方案,尽管我们已经说过,它实际上是可行的。
因为在大多数情况下一个真正的二进制数不仅仅只有一个0或者一个1,它可能包含了很多比特,是一连串的0或1,所以要表示一个真正的二进制数,比如101(也就是十进制的5),需要一排开关,每一个开关对应一个比特:
图3.2
日期:2009-02-06 19:28:47
这个创意非常新颖,也非常重要,所以我们应该立即将它应用到我们正在努力建造的运算部件中,如图3.3所示。尽管刚看到这幅图时很多人会出现精神恍惚的症状,但是我相信只要稍做解释大家不用吃药就能很快得到缓解,并能非常明白这个图的意思。
图中的灰色方框通常代表一个具有某种功能的电路,在这里它代表的是我们一直努力想要建造的运算部件。之所以这样做,是因为我们正在讨论如何用开关来表示数,这是我们当前关注的焦点。况且,哎呀,现在还不知道它的内部到底如何构造,用一个方框来代表真是最好不过了。
这个运算部件的左边和下面各有5个开关,分别用于输入两个参与运算的二进制数,这意味着它们都是5比特的。就象前面已经讲过的那样,要表示一个二进制数,只需要接通或者断开它们中的一个或多个。那么为什么在这里非得是两个5比特二进制数呢?这没有什么特别的原因,唯一的原因是我这会儿挺高兴,一高兴就用了这么多。如果我不高兴,也许我会用6个、8个甚至更多比特的二进制数。一句话,这只是一个例子。
图3.3
日期:2009-02-06 19:30:37
这幅图充分表明了二进制数之所以在电的世界里受到欢迎的原因,我相信你对它也是非常欢迎的。要在以前,你必须制作一大堆电路,为的是生成不同的电压,这还不算,为了知道生成的电压够不够数,你还得拿着电压表一遍一遍地挨个儿测量,而获得这点成就感所付出的却是满头大汗和筋疲力尽。但是现在,你只需要准备一个合适的电源和为数不多的开关就足够了。至于精度,在这里有电表示1,没有电表示零,使用多大的电压都无所谓,只要不会烧坏零件或者电着自己,你认为在这里精度会是个问题吗?
除此之外,还有更令人感到振奋的。在前面的设计过程中,由于忙着解决如何将数送到运算部件里去,我们还没有认真研究过另外一个同样很重要的问题,那就是当运算结果出来之后我们怎样知道它是不是正确,是否是我们真正想要的。现在,由于采用了二进制,这个问题也迎刃而解了。方法出奇地简单,因为运算部件是以二进制的方式工作,它送出来的运算结果自然也是用一排导线表示的二进制数。这样,我们可以把小灯泡接在每一根输出上(让它费点儿电,毕竟人们常说只有付出才能得到回报),以此来显示这些输出的比特到底是0还是1(如图3.4)。
图3.4
日期:2009-02-06 19:33:07
这个办法真好,而且特别有意思,它使得结果能以可视的形式直接被我们用眼睛观察到。当某根导线上没有电时,与它相连的灯泡不亮,代表这一比特是0;当灯泡亮时,表明这一比特是1。如果依次记下这些比特并将其换算成十进制,我们就能知道结果到底是几,这真是再好不过了。
看起来二进制与电学还真有着不解之缘,好象它是专门为发明电子计算机而量身定做的。
【网站提示】 读者如发现作品内容与法律抵触之处,请向本站举报。 非常感谢您对易读的支持!
举报
© CopyRight 2011 yiread.com 易读所有作品由自动化设备收集于互联网.作品各种权益与责任归原作者所有.