在計算機中,二進制數是以補碼的形式進行運算的。
這樣做的目的,是為了用統一的方式,進行有符號數的加減法,使得硬件復雜度最小化。
相關的原理比較復雜,這里不多展開。
江寒首先要實現的,是最簡單的“半加器”。
其功能十分簡單,就是實現兩個二進制位的加法。
之所以叫“半加器”,是因為輸入只有兩個,不考慮其他運算產生的進位。
它的兩個輸入位,只允許傳入兩個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個二進制位。
之所以這么做,是考慮到了來自其他數位的進位。
“全加器”有多種設計。
最簡單的設計,可以用兩個“半加器”,加上一個“或門”來實現。
多個“全加器”級聯,就成了“多位全加器”,也叫“加法器”。
隨后,江寒還實現了另一個基本運算器件:“增量器”。
“增量器”的功能只有一個,給輸入的數據加1。
隨后,在以上工作的基礎上,就可以打造出可運算n位二進制數的“加法器”了。
但在實現之前,江寒再次打開“商品列表”,買了幾張“空白圖紙”。
這玩意是他前幾天翻閱元件列表時,無意中發現的。
其功能也很簡單。
將其與任何作品一起回收,系統都會自動生成對應的圖紙,并將其收納于【圖紙列表】中。
說實話,江寒對這個功能還是挺欣賞的。
盡管要多花一些積分,但至少省了手繪圖紙的麻煩。
江寒將一只“與非門”和空白圖紙一起扔進了【回收站】。
點擊了確認以后,作品與空白圖紙同時消失。