一碗酸梅湯 作品

第136章 打造算術邏輯單元

    在計算機中,二進制數是以補碼的形式進行運算的。

    這樣做的目的,是為了用統一的方式,來進行有符號數的加減法運算,使得硬件複雜度最小化。

    關於補碼的運算規則比較複雜,這裡不多展開。

    江寒首先要實現的,是最簡單的“半加器”。

    其功能十分簡單,就是實現兩個二進制位的加法。

    之所以叫“半加器”,是因為輸入只有兩個,不考慮其他運算產生的進位。

    它的兩個輸入位,只允許傳入兩個1位的二進制數:1或者0。

    輸出的運算結果,也有兩個二進制位。

    一個叫sum位,表示“和”;另一個則是carry位,保存著“進位”信息。

    比如……

    輸入:【1,1】,則輸出【1,0】

    輸入:【1,0】,則輸出【0,1】

    輸入:【0,1】,則輸出【0,1】

    輸入:【0,0】,則輸出【0,0】

    輸出中,前面的是carry位,後面的是sum位。

    如果單看sum位的取值,這不就是把輸入進行了xor(異或)運算的結果嗎?

    再看carry位,它的取值也很有規律,就是個and(與)邏輯。

    沒錯,就是這麼簡單。

    只要將一個“異或門”,並聯上一個“與門”,一隻半加器就做成了。

    做好了這隻半加器後,江寒又將其改造了一下。

    為了縮減工藝難度,統一基本元器件的種類,可以只用“與非門”,去實現所有的邏輯運算。

    江寒很快就完成了這個計劃。

    畢竟一隻“半加器”的構造,實在很簡單。

    當然,這裡也可以使用“異或門”或其他什麼門,效果都差不太多,沒什麼本質的區別。

    江寒試著將這隻半加器扔進了“回收站”。

    也不知道,這麼簡單的“半加器”,到底值多少積分?

    結果沒什麼驚喜,只有可憐的1.6分,遠遠不能保本。

    好吧,繼續改進。

    接下來,江寒將“半加器”改造成了“全加器”。

    和“半加器”相比,“全加器”只多了一個輸入位。

    也就是說,輸入端包含了3個二進制位。

    之所以這麼做,是考慮到了來自其他數位的進位。

    “全加器”有多種設計。

    最簡單的設計,可以用兩個“半加器”,加上一個“或門”來實現。

    多個“全加器”級聯,就成了“多位全加器”,也叫“加法器”。