計(jì)算機(jī)中的一切計(jì)算都是用二進(jìn)制進(jìn)行的。平時(shí)我們用的十進(jìn)制是逢十進(jìn)一,二進(jìn)制則是逢二進(jìn)一。我們用的算盤事實(shí)上有兩種用法,一種是十進(jìn)制,一種是十六進(jìn)制。算盤中代表“五”的珠有兩個(gè),最上面的那個(gè)就是用于進(jìn)行十六進(jìn)制運(yùn)算的。為什么電腦中非要采用二進(jìn)制呢?主要原因是做一個(gè)二進(jìn)制的電路比較簡單。因?yàn)槎O管有單向?qū)щ娦?,即總處于?dǎo)通與不導(dǎo)通兩種狀態(tài)之一。若通代表1,不通代表0,則0與1剛好表示出二進(jìn)制的全部數(shù)碼。二極管的兩個(gè)狀態(tài):通與不通,決定了由它制出的電腦必然采用二進(jìn)制。如果二極管有10個(gè)狀態(tài)可以利用,那么電腦就有可能采用十進(jìn)制了。但有10個(gè)狀態(tài)可利用、像二極管那樣可用于制造電腦的東西在現(xiàn)實(shí)中還沒有發(fā)現(xiàn),所以人們不會舍近求遠(yuǎn)。因此電腦中的運(yùn)算至今仍采用二進(jìn)制。我們平時(shí)用電腦時(shí)感覺不到它是在用二進(jìn)制計(jì)算是因?yàn)殡娔X會把你輸入的十進(jìn)制數(shù)自動轉(zhuǎn)換成二進(jìn)制,算出的二進(jìn)制數(shù)再轉(zhuǎn)換成十進(jìn)制數(shù)顯示到屏幕上。最早的計(jì)算機(jī)可不會這樣,你必須自己把輸入的數(shù)據(jù)轉(zhuǎn)換成二進(jìn)制才行。與我們現(xiàn)在的程序員相比,那時(shí)的程序員真可謂是水深火熱呀。
現(xiàn)代計(jì)算機(jī)的原理可以作如下理解:計(jì)算機(jī)是由好多個(gè)微小的晶體管組成,計(jì)算機(jī)都有一個(gè)時(shí)鐘電路,時(shí)鐘電路提供電脈沖。千千萬萬個(gè)晶體管有的導(dǎo)通,有的不導(dǎo)通,這是一個(gè)非常復(fù)雜的狀態(tài),但每個(gè)狀態(tài)代表一個(gè)特定的意義。這一點(diǎn)和我們用算盤進(jìn)行計(jì)算時(shí)是相似的。每一次撥動算珠之后,算盤處于一個(gè)特定的狀態(tài),按部就班地進(jìn)行下去,最后展現(xiàn)在算盤上的就是運(yùn)算結(jié)果了。而對于電腦來講,每過來一個(gè)電脈沖,電腦中的那些晶體管有的就會由導(dǎo)通變成不導(dǎo)通,不導(dǎo)通的有的會變成導(dǎo)通。這樣就會處于另一種新的狀態(tài),再來一個(gè)電脈沖,狀態(tài)又變一次,最終達(dá)到目標(biāo)狀態(tài),完成任務(wù)。這和打算盤相似之極。但人撥動算珠的速度有限,電腦的時(shí)鐘電路每秒鐘產(chǎn)生的脈沖個(gè)數(shù)可達(dá)到幾百萬次甚至更多,這就是電腦高速的由來。提高每秒脈沖的個(gè)數(shù),就是提高時(shí)鐘電路的頻率成了提高電腦速度的主要方法。當(dāng)然也不是想把時(shí)鐘頻率定成多高就一定能成功,因?yàn)殡娔X的集成電路中的晶體管由通變?yōu)椴煌ǎ蛴刹煌ㄗ優(yōu)橥傂枰粋€(gè)時(shí)間。如果脈沖過快,晶體管狀態(tài)來不及變,下一個(gè)脈沖又來了,這就會造成混亂,當(dāng)然機(jī)器就無法工作了。時(shí)鐘頻率必須和電腦的集成電路器件相匹配,電腦才能充分發(fā)揮其效率。打算盤時(shí)我們腦中有口訣可用,計(jì)算機(jī)工作時(shí)怎么知道自己應(yīng)該讓哪個(gè)晶體管導(dǎo)通、哪個(gè)不導(dǎo)通呢?這就靠程序。人們把計(jì)算機(jī)每次該怎樣進(jìn)行自己的動作事先編好程序,到時(shí)計(jì)算機(jī)就會按程序進(jìn)行工作了。
最早的計(jì)算機(jī)程序是由二進(jìn)制組成的數(shù)碼,編程人員必須記住每個(gè)代碼的意義。這和記電話號碼差不多,而且這些數(shù)碼還是二進(jìn)制的,其困難程度可想而知。因此,那時(shí)程序是非常昂貴的。但是計(jì)算機(jī)有個(gè)好處,一旦編好程序,以后還可再利用(這就是信息或知識!)。于是,經(jīng)過幾十年的努力,人們已經(jīng)能用高級語言與計(jì)算機(jī)打交道。原來的機(jī)器代碼是人與電腦打交道的一種“語言”,它是一種低級語言,機(jī)器能懂得這些二進(jìn)制代碼,一般人員卻不懂?,F(xiàn)在人們發(fā)明了高級語言,它近似于自然語言,比如你寫B(tài)EGIN電腦知道是開始,寫END電腦知道是結(jié)束。這是由于人們編了一個(gè)特定的程序,它能把BEGIN、END等等這些單詞(甚至聲音)自動翻譯成電腦認(rèn)識的機(jī)器碼,而這一過程在最早時(shí)期卻是人來翻譯的。所以現(xiàn)在的電腦編程序比以前“容易”多。
通常我們講的電腦主要是指數(shù)字式的電腦,其實(shí)還有一種模擬式的電腦,如果取得突破,其前景也是極其光明的。什么是模擬式電腦呢,舉個(gè)例子,計(jì)算1.23+4.56=?我們找一桿秤,稱出123斤的東西,再稱出456斤的東西。然后放在一塊稱,則得總和為579斤左右。我們不須計(jì)算,就得出1.23+4.56等于5.79左右,這是一個(gè)有趣的思路,其實(shí)很多問題我們根本沒有算法,但通過一些間接的手段,卻可以得出近似的結(jié)果。比如古代人們不會計(jì)算園周率的值,就采用線來量一個(gè)圓柱,然后比一比,就可知道園周率的值大約為3。模擬計(jì)算機(jī)的關(guān)鍵在于選擇用于模擬的部件,部件模擬得越精確越好,就像測圓周率時(shí)那個(gè)園柱越園越好一樣。模擬計(jì)算機(jī)的速度是數(shù)字計(jì)算機(jī)無法比的,因?yàn)樗⒉皇钦嬲谒?,而是直接得出結(jié)果,它的致命缺點(diǎn)是不精確。
因此,在計(jì)算機(jī)內(nèi)部通常用二進(jìn)制代碼來作為內(nèi)部存儲、傳輸和處理數(shù)據(jù)。
一、可行性:若使用十進(jìn)制數(shù),則需要這樣的電子器件,它必須有能表示0—9數(shù)碼的10個(gè)物理狀態(tài),這在技術(shù)上是相當(dāng)困難的(目前為止沒有完全解決),而使用二進(jìn)制數(shù),只需0,1兩個(gè)狀態(tài),技術(shù)上輕而易舉,如開關(guān)的通與斷,晶體管中導(dǎo)通與截止等,磁介質(zhì)的帶磁與不帶磁。
二、可靠性:二進(jìn)制只有兩種狀態(tài),數(shù)字傳輸處理不易出錯(cuò)。
三、簡易性:二進(jìn)制運(yùn)算法則比較簡單,如:
求和法則(3個(gè)) :0+0=0 , 0+1=1+0=1, 1+1=10
求積法則(3個(gè)) :0×0=0,0×1=1×0=0, 1×1=1
這就使計(jì)算機(jī)運(yùn)算器的結(jié)構(gòu)大大簡化,控制也簡單,較容易實(shí)現(xiàn)
四、邏輯性:可用進(jìn)制的0,1直接代表邏輯代數(shù)中的“假”和“真”