計算機判斷溢位的原理?

時間 2021-06-02 18:09:03

1樓:Sinaean Dean

你眼中的八位暫存器實際可以進行9位運算。第九位連在溢位標誌位上,你進行的運算不涉及第九位的時候第九位就是零,涉及到第九位的時候就是一,此時就溢位了。

2樓:北極

計算機中說的溢位(OF)一般是指補碼模式的加減運算的條件下。

補碼模式有這麼幾個計算、轉化規則:

-[X] = [-X]

+[Y] = [+Y]

-[-[X]] = [X]

並且計算遵循交換律,證明過程不展開說了,反正這是補碼設計的原則。

然後再看計算機一共有多少種加減計算:

對於加法來說,運算元符號可能是:

1. [正] + [正]

2. [正] + [負]

3. [負] + [正]

4. [負] + [負]

對於減法來說:

1. [正] - [正] 相當於加法裡的(2)

2. [正] - [負] 相當於加法裡的(1)

3. [負] - [正] 相當於加法裡的(4)

4. [負] - [負] 相當於加法裡的(3)

所以加法和減法是乙個東西,那麼就只看加法。

加法裡,哪種操作會溢位?

對於乙個有N位二進位制的補碼,其能表示的數字的範圍是:

-2^(N-1) ~ +2^(N-1)-1

負數:-2^(N-1) 到 -1

正數:1 到 2^(N-1)-1

那麼對於加法來說:

「[正] + [負]」或者「[負] + [正]」永遠都不會溢位,不管兩個運算元取值多少,結果都落在有效範圍內。

而超出有效範圍的兩種可能性就是:

1. [正] + [正]

2. [負] + [負]

那麼再看這兩種操作如果超出範圍的話,表現形式是什麼樣的:

定義兩個事件:

1. 最高有效位進製:對於N位補碼,第N-1位發生了進製;

2. 符號位進製:對於N位補碼,第N位符號位發生;

定義4個邊界值,以8位有效字長為例:

最大正127 (0111 1111)

最小正1 (0000 0001)

最小負-128(1000 0000)

最大負-1 (1111 1111)

列出所有組合(消除交換律重複)

符號位最高有效位是否發生溢位最高有效位進製符號位進製

[最小正] + [最小正] 0 0 0 0NNN

[最小正] + [最大正] 0 0 0 1YYN

[最小正] + [最小負] 0 1 0 0NNN

[最小正] + [最大負] 0 1 0 1NYY

[最大正] + [最大正] 0 0 1 1YYN

[最大正] + [最小負] 0 1 1 0NNN

[最大正] + [最大負] 0 1 1 1NYY

[最小負] + [最小負] 1 1 0 0YNY

[最小負] + [最大負] 1 1 1 0YNY

[最大負] + [最大負] 1 1 1 1NYY

所以,從規律上看凡是發生溢位操作,「最高有效位進製」和「符號位進製」必然是乙個是Y另乙個是N,凡是不發生溢位的操作,必然是兩個全Y或者兩個全N

這就是根據最高有效位和符號位發生進製的異或來判斷是否溢位規律。

下面是邏輯證明環節,很繞,證明方法很簡單,就是把幾種條件都列出來判斷一下即可:

[正]+[正]溢位,因為兩個都是正整數,所以符號位都是0,溢位時最高位發生了進製,但因為符號位是0,0加上進製的1是永遠不會發生進製的。所以對於前面定義的兩個事件:「最高有效位進製」發生了,「符號位進製」未發生。

[正]+[負]不溢位時,此時設正數範圍包括0:

如果結果為負整數,因為第二個運算元的符號位是1,結果的符號位也是1,那麼「符號位進製」未發生,同時「最高有效位進製」也未發生。因為如果發生了,會產生乙個進製1,與符號位1相加會倒是符號位變化,而此時符號位是不變的,所以可以肯定兩個事件都沒有發生。

如果結果為正整數,那麼必然同時發生了「最高有效位進製」和符號位進製」,因為第二個運算元的符號位是1,但結果符號位是0,所以符號位有進製(1 + 0 + X = 10)。而第乙個運算元的符號位又是0,所以必然是最高有效位產生了一位進製才讓符號位獲得了乙個1才能進製,對於符號位的計算來說[正]符號位0 + [負]符號位1 + 最高有效位進製X = 10,X必然是1

[負]+[負]溢位,因為兩個都是負整數,所以符號位都是1,溢位時符號位發生了進製(兩個都是1)。再看最高有效位是否有進製,對於8位的負數加法來說,產生溢位,意味著結果範圍在-129~-256之間,這個範圍內的二進位制數,以9位補碼來看,就是1 0111 1111到1 0000 0000,那麼這兩個數如果減掉符號位相加的1 0000 0000的話,得到的結果就是 0111 1111到0000 0000,這個範圍內的數字第8位都是0,所以從符號位的計算可以得知[負]符號位1 + [負]符號位1 + 最高有效位進製X = 10,最高有效位的進製值必然是0,所以最高有效位必然沒有發生進製。

希望你能看懂吧,反正挺繞的。

國外的計算機專業 是如何教《計算機組成原理》這門課的?

c rt 新加坡國立大學的話大部分人是大三上,上的是cg3207 computer architecture。感覺教授的講義也是到處搬運的。然後剛開始就講一些相關的state of art然後正課具體的syllable我記不太全就不寫了,主要是四次project,從寫乙個加法器到寫乙個簡單的cpu再...

計算機的基本工作原理是什麼?

1379號基因哥 計算機硬體的基本組成是馮諾依曼提出的如下五大部分 1 運算器 負責完成算術運算 邏輯運算任務2 控制器 負責指揮計算機各部件按照指令指定的功能進行各種操作,使計算機能夠按照程式的安排,自動完成規定的任務。3 儲存器 程式和資料以及運算的中間結果和最終結果均以二進位制形式儲存在其中。...

如何學習《計算機組成原理》和《計算機網路》,總感覺課本有點泛泛而談?

已登出 計算機原理推薦南京大學袁春風老師的課程,國內這方面做的很好 相傳408命題人 學習工科很多時候需要巨集觀上把握概念,過於追求細節陷入其中學不好,學完了也只記五部指令操作,無非就是指令從存貯器通過IO到cpu 低唱語焉不詳 先說一句,很多人說學好計組可以更好的了解程式設計原理,也就能幫助人更好...