2011-03-09 53 views
2

我正在尋找一個很好的解釋爲什麼不知道如何,我知道)二進制減法總是(?)通過添加補碼等來完成。僅僅是因爲額外的邏輯門將是必要的還是有更多複雜的原因?例如,我可以理解,如果結果是否定的,這將是有問題的 - 代表可能不得不改變。你能想出更多的理由嗎?爲什麼二進制減法總是(?)通過添加補碼完成?

+0

您可能要查看以下相關問題:http://stackoverflow.com/questions/1125304/why -is-twos-complement-used-to-represent-negative-numbers – 2011-03-09 16:17:12

回答

5

考慮一個8位加法器。有2組8個信號進入,還有一個進位位。您可以構建2個幾乎相同的電路,然後包含一個多路複用器,以選擇將哪個結果存儲在結果寄存器中。或者你可以在一個操作數的路徑中添加一行XOR門。通過與1進行異或運算得到補碼。由於X-Y = X +〜Y + 1,所以還將該「1」饋送到加法器的進位輸入。你現在有一個稍大的電路,可以做兩個操作,而不是一堆更多的電路。您也可以將0提供給一個參數,並使用XOR門實現NOT。加法器也可以稍微修改以執行其他操作 - 比如兩個操作數上的XOR - 只需很少的電路。這一切都可以追溯到小規模集成日期,當時門將被最小化。自那以後沒有任何理由再以其他方式做。請參閱以下74181 4位ALU的電路圖,該電路可以執行一系列操作: 74181 description

+0

這是一個很好的提示。在我的關於微處理器的書中,我曾經見過74181 ALU,但是沒有那麼詳細,特別是那個小程序的交互性。 – tmr 2011-03-10 11:10:49

0

你已經擊中了頭部,這一切都是關於死亡的空間。爲什麼用更多的電路阻塞ALU?這是可以用於邏輯的空間,或者更小的ALU和更多的內存。

0

更容易將減法分解爲彙編級別上的兩個操作,而不是將更多功能添加到處理器電路。從本質上講,你只需要添加已有的東西,除非這是單一操作,如果將它作爲補充的補充,那麼可以重新使用加法和補充電路,而不是浪費處理器上的空間來添加你已經有了