第27章 運算器原理

字數:3155   加入書籤

A+A-


    葉楓解釋道:“那叫中間電平,識別狀態不定,可能是高電平,也可能是低電平。所以在實際應用中一般會盡量避免這種情況發生。舉個例子就是以前使用的網線的長度問題,一般網線使用距離不超過100米。因為線路越長,就要用越大的電壓等級來輸電。網線通電電壓很低,網線過長就會導致信號減弱,一般在中間要增加中繼設備增強信號。”
    王猛說道:“哥,跑題了,咱講計算機加法計算呢。”
    葉楓白了一眼王猛道:“還不是你問的?”
    王猛笑著道:“那你也不用講那麽多不是?來繼續講計算機,我就想知道這玩意能不能用人代替。”
    葉楓無奈的繼續說道:“計算機計算通過與或非門,包括組合方式的與非門、或非門和異或門。與門和或門都是三極管,兩個輸入一個輸出,非門是二極管一個輸入一個輸出。與門在邏輯上就是,當所有的輸入同時為高電平1時,輸出才為高電平1,否則輸出為低電平0。”
    “電路設計就是一個三極管和一個限流電阻,限流電阻就是為了避免過大的電流燒毀用電器,而串聯的保護性電阻。原理就是通過提高負載的總電阻而減少電流。簡單說就是一個保護裝置,有高電平通過時候就會阻斷,輸出就為低電平。電路原理就是如果第一個輸入是低電平,那麽限流電阻不會受到影響,另一個輸入是低電平那麽輸出就是低電平。”
    “如果另一個輸入是高電平那麽就會被限流電阻阻斷,所以輸出還是低電平。如果第一個一個輸入是高電平,限流電阻就會阻斷,另一個輸入是低電平,那麽輸出就是低電平,輸入是高電平那麽輸出就是高電平。”
    葉楓看了看一臉疑惑的王猛,無奈的說道:“簡單說與門就是串聯電路,兩個開關都打開就通電,結果就是高電平。或門就是並聯電路,隻要有一個是高電平結果就是高電平。”
    王猛恍然大悟的說道:“你早這麽說我不就懂了?前麵什麽主流非主流的太囉嗦,你這講解水平有待提高。以後給別人講什麽就按後麵這種方式來,簡單易懂,不廢話,不囉嗦。”
    葉楓皺了皺眉,白了一眼王猛繼續講道:“那我隻解釋用途,不講具體實現方式。低電平表示0,高電平表示1。與門就是兩個輸入全1時,輸出結果就是1,有一個是0,輸出結果就全是0。”
    “或門就是兩個輸入全是0,那麽輸出結果就是0,有一個是1,輸出結果就是1。非門一個輸入是1,結果就是0,輸入是0,結果就是1。與非門就是先與再非,兩個輸入全是1,輸出結果就是0,兩個輸入有一個是0,結果就全是1。”
    “或非門就是先或再非,兩個輸入全是0,輸出結果就是1,兩個輸入有一個是1,結果就全是0。異或門由一級或非門和一級與或非門組成,兩個輸入相同電平,則輸出就是0,兩個輸入電平不同時,輸出結果就是1。”
    王猛覺得有點難記,拿出手機記錄著葉楓說的內容。
    葉楓看他記錄完繼續說道:“我們計算用的是十進製,但計算機用電隻能表示兩個值,即0和1。我們進位是個十百千萬,計算機進位是2、4、8、16,即2的幾次方來進位。比如計算加法,計算機需要用到兩個異或門和三個與非門。”
    “輸入有輸入甲,和輸入乙,和進位丙。舉個簡單例子,我們計算一個1加1,我們要考慮這兩數字加完後本位寫什麽,和是否進位,以及第一級是否有進位。”
    “本位計算是將兩個輸入信號輸入異或門,剛剛講過相同即為0,那麽這個值再與進位輸入到另一個異或門,這裏算1加1,沒有低一級的計算,所以進位輸入為0,剛剛的結果是0和這個進位0輸入道異或門結果還是0,那麽右邊第一位數字為0。相當於我們個位為0。”
    “接下來判斷是否進位,將1加1輸入到與非門輸出結果為0,有人可能會覺得這裏應該用非門,這樣會造成一個錯誤比如三個輸入都為1的時候結果就錯了。”
    “這個結果0先放一邊,我們再用輸入甲和乙通過異或門後的輸出結果0,和進位丙的0輸入到與非門,得到輸出結果1,再將結果1與之前放一邊的輸出結果0一同輸入到一個與非門,那麽結果就是1,所以下一位的進位項丁就是1,下一位的兩個輸入戊和己都是0。”
    “再次進行剛才的計算,戊和己輸入到異或門,輸出就是0,與進位丁輸入到異或門結果就是1,所以有數第二位寫數字1。”
    “這時其實結果已經有了就二進製10表示的是十進製數字2,但計算機會繼續接下來的計算,戊和己輸入達到與非門結果是1,輸出結果1同樣先放一邊,戊和己輸入到異或門輸出的結果0和進位丁的1放入與非門得到結果1,與之前放在一邊的結果1一起輸入到與非門得到結果0。”
    王猛一臉驚訝的看著葉楓道:“算了這麽久就算一個1加1等於2?這要是算個三位數的加減法就要幾萬人吧。”
    葉楓微笑著道:“三位數的加法夠幹啥的?天文學上用到的數據都是億為單位的。你算算需要幾億人能算?”
    王猛尷尬的問道:“那幾千萬人肯定算不了這個數吧?”
    葉楓道:“可能你教幾千人幾年數學,再讓他們幫你算,都要比你這快得多。幾萬人掰手指算都比你快。如果是我,我就做一些機械計算器來算,或者做一些算盤出來也比這種方式要快得多,因為十進製比起二進製有太大的優勢。”
    “計算機運算跟不上需求速度就是因為這種計算方式。這好比一個小孩隻會個位為單位的計算,十以內的對他來說很容易。但讓他計算一萬加一萬的時候,他的計算過程是兩萬根手指有多少個十,他是通過一個一個數出來的,他的認知一萬是十個十個十個十。如果我們教會他萬為單位,那麽他的計算速度就是伸出兩根手指,兩萬。”葉楓同時伸出兩根手指,
    “所以要提高計算機的運算速度是優化算法,這是一個數學問題。總線的傳輸速度隻影響計算器運算器之間的數據交換,有瓶頸的時候會影響運算速度,但沒有瓶頸的時候在寬的總線帶寬也無濟於事。這好比你就十噸貨物,你有兩輛可以拉五噸貨物的卡車,如果路隻有一車道,那麽是瓶頸,如果是雙車道的路就剛剛好,三車道的路沒有任何意義,哪怕是一百車道但你貨物和同時發出的車就兩輛,都是沒有任何意義的。”
    王猛點了點頭道:“那麽說你發明的光總線計算機沒啥用了?”