第一節:數字與計算

小節內容

一、邏輯運算的歷史
二、數字的運算概念
一、邏輯運算的歷史

  古希臘時代(600BC∼300BC)一群崇尚知識的上層統治階級,閒暇時,在哲學與理論的氣氛中,導出了演繹的推理工具。其中最為出名的是亞理斯多德(Aristotle,384BC∼322BC)。現代人稱他為傳統邏輯之父。傳統邏輯的代表是所謂的三段論法(Syllogism)。
  這個階段的邏輯體系並不完美,沒有發展出系統化及有順序的步驟來做快速的演繹,而且因為只用字句,阻礙了邏輯進一步的發展。
  邏輯發展的第二個階段由萊伯尼茲(Leibniz,1646∼1716)開端。他被公認為第一個認真思考符號邏輯的學者。他把符號用在邏輯中,希望使邏輯成為推理的通用語言。可惜他未完成一個有系統的符號邏輯(Symbolic logic)系統基礎。
  十九世紀,數學快速的發展,英國著名的數學家布爾(Boole,1815∼1864)創造了以他命名的邏輯代數系統。他把代數使用的符號和運算賦予邏輯的意義,邏輯的概念和判斷的形式變成代數的符號和公式,使得邏輯的推理轉化為代數的演算。終於奠定了「符號邏輯」,也就是「數理邏輯」的基礎。
  從邏輯的演進過程來看,由傳統的哲學邏輯演進到「數理邏輯」,使邏輯變成可以運算。「運算」簡化生活複雜度,加速邏輯的學習,自然而然提高「數位邏輯」的學習效率,本章「邏輯電路的運算基礎」將從這種角度切入,作準備工作。

二、數字的運算概念 Top

1.機器的運算能力
  要賦予機器算術能力,人類必須先把算術能力「細節化」、「詳細化」、「機械化」。任何的算術問題可歸納為四個基本算法,就是「加」、「減」、「乘」、「除」。這些方法,因為我們從小就開始學習體會與「累積」,而且又經過長時間的練習與應用,所以在我們的腦中早已成習慣也視為「理所當然」。但是機器的這四種計算能力就必須靠我們的給予,它們的計算方法和我們的習慣不一定完全一樣。必須一步一步地、呆呆板板地做,它們是為了延伸人類計算能力而設計的。現在讓我們先介紹一種十進位的加法機器。

2.十進位加法器
  計算機的演進和人類的科技是一致的。到了17世紀,科學開始萌芽,計算機才有進一步的突破。公元1642年,法國數學家巴斯卡(Blaise Pascal)發明了最原始的十進制齒輪式計算機,計算機才由手動進步到機械帶動。不過算盤的重要性並未減退。
巴斯卡的計算機是把十進制的數字安排在一個有十隻齒的齒輪上。每一個齒上順序安排「0」至「9」九個數字。這種齒輪我們稱為十進位齒輪。

3.進位問題
  計算機發展中的「進位」是一個大難題,若用算盤的話,進位是靠使用算盤的人來操縱。例如遇到6+4,他能很技巧地在十進位裡加上一枚珠兒表示出「10」的數字來。但是用機械計算機的情形就較複雜了,因為缺少了人類即時的參與。
  例如我們可以利用三個齒輪來記錄三位數的數字。只要把三個齒輪分別撥到箭頭指著的4、2和6的位置,這樣就記下了「426」的數目。如果要加「112」,這時我們可在右手邊的輪上轉動二齒,即表示加了「2」的數目進去,這時最右邊齒輪顯示著「8」了。中間的一個和左邊的一個同樣轉動一齒,以表示加了「1」的數字進去。於是就完成了426+112=538的演算程序了。
  要明白自動進位的計算概念,我們不妨看看汽車上的里程計。圖2-1中共有六個鼓形的齒輪,當第一個齒輪轉到9的時候,若再轉多一齒的話,它本身又回復到「0」,同時能自動用一齒推動左邊和它一起的另一輪。使它進一單位數字而表示「1」的數。這種自動進位的辦法,以前巴斯卡計算機是沒有採用的,直到後來才發明出來。

圖2-1 齒輪加法器

4.二進位的計算概念
  由於科技的進步,形成電子環境,提高二進制的地位。在今天的數位電子及電腦中,二進制成為計算的主流。我們比較一下二進制和十進制加法之不同。
(1)加法
                   0 + 0 = 0
                   1 + 0 = 1
                   0 + 1 = 1
                   1 + 1 = 0 必須再進一位
  這些規則適用於兩個正數的加法,實際二進位加法所必須遵守的規則也只有這些而已。例:

圖2-2 實際二進位加法

(2)減法
  在二進位的加法中,對於整數的加法只有四種簡單的演算過程,而二進位的減法也有幾種不同的方法。第一,直接從一個二進位數減去另一數,其規則和演算法和加法相似,可寫出如下:
                   0 - 0 = 0
                   1 - 0 = 1
                   1 - 1 = 0
                   0 - 1 = 1 需一個借位
  只因被減數大於減數,任何兩個二進位數目,都可利用上述的演算法計算,這種減法可用下列的兩個實例說明:

圖2-3 二進位減法

(3)乘法
a.二進位乘法運算規則
  二進位乘法之四個原則(基本運算)如下:
                   0 × 0 = 0
                   0 × 1 = 0
                   1 × 0 = 0
                   1 × 1 = 1
  這些基本的運算,實際上與十進位系相同,但是在二進位乘算中,處理大數目、分數及正、負數時,就需要更多的運算過程。
  執行二進位乘法前,須先考慮兩個簡單且熟悉的特點:
第一:乘法是加法的重覆,10×4就是10自加四次,這個觀念同時適用於二進位及十進位中。

  第二:一個二進位數目移位到左邊的一位數時,即等於乘以2。在十進位系統中,一相同的移位即等於乘以10。只不過前者以2為基底,而後者以10為基底而已,兩者的原理相同。例如:

b.二進位的乘法是重覆使用加法和移位的兩個步驟而造成的。
  將二進位的乘法利用一般十進乘法的方式運算。下面例子是二進位的乘法運算過程。

  二進位乘法比十進位乘法步驟多,但是「單純」。例如,在二進位乘法中,各部分的乘積不是乘以1就是乘以0,因此各部分的乘積不是等於乘數就是等於被乘數,也就是等於0或等於1,因此我們把上述的結果歸納如下:
  最簡單的二進位乘法乃是一串被乘數的相加,但是每加一次,就需移位一次。

(4)除法運算
  因為除法是乘法的相反,所以重覆減法的步驟就可獲得。用在十進位乘法中的例子也可用來說明除法:

  這例子表示出,除法可由40連續減去四次10而完成,其商即為減法演算的次數,這種方法可以普通的除法擴展為大數目的除法。

  上面的方法也是重覆的利用減法。不過不是直接從2526中減421次的6,而是把6向右移兩位(即乘以100),然後,減四次600(步驟1到4),也就是減去400次的6。結果餘數126太小不足以減去第一個600,所以減去兩個60,也就是減去20個6,最後剩下6。也就是一個6所以又再減去一次即2526/6就是2526減421次6的結果,所以商為421,如有剩餘那就是餘數。


Top