在介紹計算機架構之前,有沒有人想過為什麼電腦要使用二進位?
為什麼電腦不用使用人類習慣的十進位?
剛開始知道電腦是二進位處理方式的人一定會說,真他媽的我真不知道為什麼電腦一定要機機歪歪,搞個二進位這麼難的東西。
其實最初的電腦模型設計是十進位沒錯,而且最初是機械電腦,靠的是轉動機械結構來進行數字運算,但是最後這個設計沒做出來,因為當時沒有足夠的技術完成它,它只是理論上可行的電腦架構。
很可惜,自從這個理論架構被設計出來之後,後來的幾十年都沒有真正意義上可以運作的電腦,只曾經被用在單獨的加法和乘法計算機,但是到了1940年代,我們為什麼會演進成二進位的電腦架構呢?
有沒有人一想到這個問題就一個頭兩個大?為什麼電腦要設計成二進位?
很簡單,用你食指跟大姆指圍圈圈......
當然,不單純如此,還有很多其它隱性的原因,但是主要就是money。
我這樣講你又會想摔盤子,你一定會說:你這樣有解釋等於沒解釋!
不急,且聽筆者細說其由來,筆者將帶你深入計算機之美學......
其實在十七世紀中葉,最剛開始計算機的架構是以機械式計算機為主,設計也都是以十進位為基礎,最早的計算機是只做加法的,當時用十個齒表示0~9,沒多久,又出現了機械式的乘法計算機。
嚴格說起來,中國的算盤也算機械式計算機。
後來進一步,數學家提出想做更複雜功能的計算機,這個時後的設計已經開始加入自動化的概念了,機械式計算機在十九世紀有真正意義成功的只有差分機,差分機是拿來計算多項式加法求值的,但是這台機器常常故障,白白砸了大錢。
但上述還不叫作完整的電腦喔,之後,數學家的兒子繼承了數學家的遺志,立圖發展出功能更強大的計算機,可以做出所有可能的計算,包含記憶體等電腦應有的概念,理論上這個設計可行,但是當時的技術做不出來,也因此就這樣過了幾十年內,都沒有實質意義上的電腦被實作出來。
必需強調一點,差分機和分析機都是以十進位為基礎而進行設計的。
後來的電腦不用機械運轉的理由是,電子零件的技術進步了。
以下講一下電子零件與機械零件的優缺點:
1.機械式電腦的運算速度比較慢,而且體積非常大
2.機械式電腦非常容易故障,意味著結構中有一個地方變形或壞掉就不好玩了,所以精度要求極高
3.若使用機械傳動的方式進行運算,會因為機械間的物理磨擦,消耗掉不少能量
一直到二十世紀初,物理學發展呈現大爆發的指數成長,大家都知道愛迪生的電燈泡本身就是設計成真空的,而這也促成了真空管的後續發展,而且其實早在這之前,電子零件的發展一直有在進步。
接下來正式進入到二進位這個最根本的問題了,我們忘掉前面講的林林總總,重新想一下,到底為什麼電腦要使用二進位?
說明第一個理由前我們就來談談電腦實體電路對二進位的觀點吧,這就必需說電子零件最基本的限制了,其實電腦表示二進位的方式是以電壓為基礎,5伏邏輯(0伏特代表0,5伏特代表1),為什麼呢?因為線路傳輸.運算的時後耗能很大,而且雖然理想上是精準的5伏特,但實際上可能是3.5-5之間來回擺動的高誤差狀態,而且實際傳輸會有各種因素影響訊號,造成雜訊。
這個時後大家可以想想二進位的好處了,我們如果設定成二進位,就可以讓誤差的可接受度變大,這是其一好處,不容易讓訊號的辨別產生問題,如果是十進位的話,來回擺動的伏度可能造成資料辨別錯誤,而且二進位對於過濾雜訊的效果是很強的,假設你的雜訊是0.5伏的雜訊,只要在可接受的誤差範圍,比如0.5伏或4.5伏,都還是會被視為0或1。
當然後來的電腦製程技術進步,基本上沒有這個問題了...
但是還有第二個理由,就是電路設計複雜度,而且這是最主要的原因,其它都是次要。
談到第二點前,首先一定會有人必需嗆一句:誰說電腦一定要使用二進位?其實你電腦不管怎麼設計,只要保證運算結果正確,沒有人說這樣設計是不對,你也可以說:只要誤差範圍低一點,十進位也可以來試著做做看啊!但是必需說,二進位是一個最容易讓電腦普及化的設計,這是完全沒爭議的。
因為有另一種電腦是採用跟二進位電腦完全不同的設計思維去實作的,那就是類比電腦,類比電腦是使用OP放大器實作的,輸入和輸出都是類比訊號,以下將附上兩張GOOGLE圖當作參考......
類比訊號
數位訊號
在提到缺點以前,先提類比電腦的優點吧,類比電腦因為是用正弦電波的組成傳輸資料訊號,所以任何資料都可以成為訊號電波中某一斷點的電壓值,執行效率自然是極度快。
但是如果是二進位,我要表示十進位中的10的話,表示成1010,
概念完全不同,所以沒辦法說類比訊號是X進位,真要扯的話,每一個斷點都可以塞不同資料,實際上卻要視電壓的判定誤差而定。
可是注意到一點,OP放大器因為設計上較為複雜.龐大,技術考量的多,價格非常昂貴,而且像上面說的,萬一有雜訊,就死翹翹。
既然昂貴,就極難普及......
相對來說要設計一個二進位的加法器是非常簡單的,而且二進位的加法器可以和其它電路設計搭配構成除法.乘法.減法,任何你所知的運算,只要它塞在小小的晶片就能大功告成了。
那你一定會說為什麼電腦沒有辦法實作十進位,一樣,電路問題,無法找到成本更低的實作方法。
僅管聽完上述關於電腦進位制的介紹,說明二進位的設計是如何天經地易,但你心裡一定還是不能夠接受或習慣,因為我們平常計算是不可能用二進位做運算的。
但如今,你要接受它,因為它是現今最友善.最精簡的電腦硬體設計,對於硬體而言,二進位是在合理不過的事,在接下來的章節我們將提到二進位如何表示數字。