2013-07-24 110 views
0

所以,我一直在努力學習計算機在過去的幾個月,並真正瞭解他們的工作方式。我最近在學習減法器,我在想..我有幾個關於ALU的問題....

首先,據我瞭解,一個減法器使用兩個的恭維來得到一個結果。但是,它爲什麼減去?例如,這兩人對5(0101)的讚美是1011.但是,這也是一個積極的十一。即使數字被否定,什麼使得減法器將其作爲負數而不是另一個正數呢?如果問題是8 - 5,是什麼阻止了8 + 11? 什麼使它識別來自無符號位的有符號位?我聽說程序運行決定了,但問題是程序有能力決定是否添加或減少,以及如何解釋CPU和ALU。

另外,我已經知道AlU使用一個在加法和減法之間切換的電路。這個電路如何工作?是什麼讓它決定是否增加或減少?

最後,這個電路如何從加法切換到減法?我已經看到的唯一減法器是一個沒有附加門的加法器?電路在可以改變功能的東西中有何不同?

回答

0

減法不過是加法而第二個操作數是負數。二進制補碼的構造方式使得添加一個負數只需按預期工作(忽略溢出時)。

ALU不需要知道數字是正數還是負數,但是在二進制補碼中,最高有效位設置爲1的所有數字都是負數。 ALU並不在意,因爲二補的設計是爲了讓它一切正常。

現在,減法只是加法,所以我們可以使用相同的電路來執行這兩種功能。你所談論的開關所做的是否定第二個操作數(否定在二進制補碼中非常容易,有幾種方法可以實現),然後增加數字。

+0

謝謝您的回答,但我仍然不清楚我的第一個問題......如果同樣的數字也可以添加爲不同的結果,如何使這兩個讚美工作?再次使用該示例。這兩個對5的讚美也是11.所以,如果你想通過減法器來做8-5,那麼減法器中的結果是8-5而不是5 + 11的結果呢?如果它不需要知道,那麼它如何產生不同的結果? –

+0

對不起,但我想到一個更好的方式來重新考慮我的想法。比方說,我想減去1和1,並在減法器的末尾放置燈泡來表示我的結果。當然,它會減少,兩個燈泡都不亮。減法器否定該數字,然後在添加之前添加一個數字。因此,1否定爲0加1仍然爲1.因爲減法器與加法器有相同的電路,爲什麼不加1和1(因爲這些都是否定後的e結果)而不是相減?在這種情況下,是什麼使得它產生了沒有光的結果,而不是(1)光(10)? –

+0

我不知道你想用燈泡的例子來說明。你說-5和11是相同的數字,你可能是對的。但這隻意味着11對於這個特定的ALU來說太大(這是一個溢出)。無論如何,在4位系統中,1是「0001」,-1是「1111」,因此「0001 + 1111 = 0000」。 –