觸發器的模式不僅可以用來計數,它還能幫助我們進行數的運算。
我們先從簡單的算起,來看看它是怎樣把兩個數加在一起的。
像圖3那樣,把觸發器排成3排,第一排的任務是記錄被加數,第二排的任務是記錄加數,第三排的任務是記錄兩數之和。接通電流,第一、第二排中處于狀态1的觸發器分别向第三排的觸發器輸出了電脈沖。
圖3 複雜連接的觸發器
正如你在圖3中看到的,第一排的觸發器記錄了被加數101,第二排的觸發器記錄了加數111(二進制)。第三排的觸發器1接收到了兩個脈沖,這兩個脈沖分别來自于第一排(被加數)和第二排(加數)對應的兩個觸發器。
觸發器1雖然得到了兩個脈沖,它依然處于狀态0,但同時,它向觸發器2發出了一個回答脈沖。
觸發器2也得到了兩個脈沖,一個來自于觸發器1,另一個來自于第二排對應的觸發器,因此觸發器2也處于狀态0,并向觸發器3發出了一個回答脈沖。
觸發器3在得到來自于觸發器2的一個回答脈沖的同時,還從第一排和第二排對應的觸發器那裡各得到一個脈沖,它得到的脈沖信号數是三個,因此觸發器3處于狀态1,并且發出了一個回答脈沖給觸發器4。
有了觸發器3發出的回答脈沖,觸發器4得到了一個脈沖,并且隻有這一個,前面兩排對應的觸發器并沒有向它發送信号,因此觸發器4處于狀态1。
圖3中的三排觸發器就這樣完成了兩個數相加的豎式運算過程(二進制計數法):
如果用十進制來表示,這個算式就是:5+7=12。第三排觸發器輸出的回答脈沖,就像我們用豎式做加法時進位一樣,把1“記憶”下來并進到了前面的數位上。
假如每一排有20個觸發器,就可以計算百萬以内的加法運算了。再多些,加法運算的數就更大些。
圖3看起來簡單易懂,但用來完成加法運算的裝置實際上要比這複雜。比如實際使用時,必須加上信号延遲裝置。如果沒有這個裝置,就像圖3中那樣,當電流接通的瞬間,第一排和第二排上的觸發器分别發出的兩個脈沖同時到達第三排的觸發器1,兩個脈沖彙合後成為一個脈沖,這就會使觸發器收到的脈沖變成了一個而不是兩個。加裝延遲裝置就是為了使兩個脈沖中的一個稍晚些到達。但安裝延遲裝置後,加法運算的速度就會比由一個觸發器單獨記下一個脈沖的速度慢些。
觸發器并非隻能做加法運算,如果我們改變一下模式,那麼減法、乘法(乘法其實就是累加,它所需要的時間會是加法的幾倍)甚至是除法以及其他運算都是可以進行的。
事實上,現代的計算機已經使用了我們所提到的觸發器裝置,因此每秒鐘進行幾萬甚至幾十萬次的運算對于計算機來說完全不是問題,甚至随着科技的不斷進步,未來的計算機可以實現每秒鐘運算幾百萬次!這種速度看起來令人眩暈,也許你會覺得沒有什麼意義,你或許會想,用四分之一秒算出一個15位數的平方,和用幾萬分之一秒算出它的結果,這之間似乎沒有什麼太大的區别,因為這兩個時間對于我們來說,都是極小的瞬間。
但我不得不說,你的這種想法太片面了。讓我們來舉一個通俗易懂的例子。比如一位水平高超的棋手,他在下棋的時候,每走一步都要在心裡衡量出幾十種甚至幾百種方案,假如他每思考一種方案隻需要幾秒鐘的時間,那麼幾百種方案全部想一遍也要幾分鐘甚至幾十分鐘。我們在一些重大的比賽中,常看到一些棋手在後期感覺時間不足,其原因在于前面走的幾步,每一步都耗費了太長時間,以至于規定的時間早早被用完了,最後難免虎頭蛇尾。但如果這個思考的過程由計算機來完成會比人腦思考節省多少時間呢?計算機每秒鐘能計算幾千次,把全部的方案都考慮一遍,也不過是一瞬間的事,比眨眼的速度還要快,永遠都不會陷入時間不足的窘境。
也許你會覺得,即使是最複雜的計算,與下棋也是兩碼事兒。計算機是用來計算的,不是用來下棋的!棋手思考下棋的方案也不是在做計算題,人家是在思考!對于這個觀點,我們暫時不必争論,下面我們會專門對這個問題進行分析。(俄.别萊利曼)
有話要說...