2011/04/11

二進位 binary

從小羊小肯很小的時候,我就教他們用手指頭做二進位的累加運算,也就是說,一隻手有五根手指頭,可以算到 31....兩隻手的話是 1023

這樣的扳手指也算是一種運動,好玩的是,小肯聽哥哥說他午休也在練習,竟然也傳出小肯會躲在睡袋中練習。而這件事的真實性,又在老婆看小肯扳動著他那肥肥胖胖的小手指頭時,向熟識的人介紹中證實。

昨晚,小羊要求我教他「電腦是怎樣計算的?」時,我教了他基本的邏輯電路,學得倒是很起勁,而且我弄了簡單的電路他還真的會弄真假值出來。打算晚上來教他加法器,先寫下來如下:


加法器的類型
以單位元的加法器來說,有兩種基本的類型:半加器全加器
半加器有兩個輸入和兩個輸出,輸入可以標識為 AB  XY,輸出通常標識為 S 進位 CA  B  XOR 運算後即為 S,經 AND 運算後即為 C
全加器引入了進位值的輸入,以計算較大的數。為區分全加器的兩個進位線,在輸入端的記作 Ci  Cin,在輸出端的則記作 Co  Cout
半加器簡寫為 H.A.,全加器簡寫為 F.A.

半加器
半加器有兩個二進制的輸入,其將輸入的值相加,並輸出結果到和(Sum)和進位(Carry)。半加器雖能產生進位值,但半加器本身並不能處理進位值。


全加器
A + B + 進位(輸入) = + 進位(輸出)

全加器三個二進制的輸入,其中一個是進位值的輸入,所以全加器可以處理進位值。全加器可以用兩個半加器組合而成。


注意,進位輸出端的最末個 OR 閘,也可用 XOR 閘來代替,且無需更改其餘的部分。因為 OR 閘和 XOR 閘只有當輸入皆為 1 時才有差別,而這個可能性已不存在。