而這個規則正是使用異或門實現的。異或門(A XOR B)是指:只有 A 和 B 的狀態為一真一假時,才返回真。若 A 和 B 同時為真或者同時為假,則返回假。那麼你看看,上面的四條加法規則,是不是完全滿足異或門的定義?
對於進位位,我們都學過加法算式的豎式吧。類似於加法豎式,在進位位為 1 的數位上,是要再加上進位位的數的。計算機中的【加】,其實是邏輯異或。那麼問題來了,原先的兩個數,加上進位位,一共三個數,怎麼進行異或運算(A XOR B XOR C)?
我們知道,數學上的四則運算是有優先順序的,先乘除後加減。其實邏輯多項式運算上也同樣有優先順序,一般認為 NOT > AND > OR > XOR。對於同級運算,其實可以使用結合律,即:A XOR B XOR C = ( A XOR B ) XOR C = A XOR ( B XOR C )。這樣是不是就可以理解了?
而且,多試幾次,你會發現一個規律:任意 n 個(n ≥ 2)邏輯量進行異或運算,若其中有奇數個邏輯真,則最終結果為邏輯真;若其中有偶數個邏輯真,則最終結果為邏輯假。
這個你上了大學,學了計算機電路就知道了。計算器內部主要是透過異或門來實現加法運算的。
邏輯無非就這幾種:非門(NOT)、與門(AND)、或門(OR)、異或門(XOR),其中非門還可以和另外三個進行組合。加法主要是靠異或門實現的。
計算機內部為了計算方便,一律用二進位制的形式表示資料,二進位制是“逢二進一”的,只有 0 和 1 兩個數字。邏輯上一般把 0 稱為邏輯假,把 1 稱為邏輯真。計算機內部的加法也只有四條規則:
0 + 0 = 0
0 + 1 = 1
1 + 0 = 1
1 + 1 = 10(進位位 C 為 1,結果位為 0)
而這個規則正是使用異或門實現的。異或門(A XOR B)是指:只有 A 和 B 的狀態為一真一假時,才返回真。若 A 和 B 同時為真或者同時為假,則返回假。那麼你看看,上面的四條加法規則,是不是完全滿足異或門的定義?
對於進位位,我們都學過加法算式的豎式吧。類似於加法豎式,在進位位為 1 的數位上,是要再加上進位位的數的。計算機中的【加】,其實是邏輯異或。那麼問題來了,原先的兩個數,加上進位位,一共三個數,怎麼進行異或運算(A XOR B XOR C)?
我們知道,數學上的四則運算是有優先順序的,先乘除後加減。其實邏輯多項式運算上也同樣有優先順序,一般認為 NOT > AND > OR > XOR。對於同級運算,其實可以使用結合律,即:A XOR B XOR C = ( A XOR B ) XOR C = A XOR ( B XOR C )。這樣是不是就可以理解了?
而且,多試幾次,你會發現一個規律:任意 n 個(n ≥ 2)邏輯量進行異或運算,若其中有奇數個邏輯真,則最終結果為邏輯真;若其中有偶數個邏輯真,則最終結果為邏輯假。
這樣,一個簡單的加法器就出來了。我們可以試試(假設是一個八位二進位制的加法器),比如 23 + 44 = ?
23 的二進位制為 00010111
44 的二進位制為 00101100
運算的結果是二進位制的 01000011,換算成十進位制是 67,完全正確。
計算器的加法原理就這麼多,其餘的減法、乘法、除法什麼的也是在加法器的原理上進行改裝的,在這裡就不說太多了。