二進位制數系統 - C/C++ 中的算術加法溢位?


2 的補碼數系統廣泛應用於計算機體系結構中。

N 位 2 的補碼數系統能夠表示從 -2n-1 到 2n-1 - 1 的數字。

4 位能夠表示從 (-8 到 7) 的數字。

5 位能夠在 2 的補碼系統中表示從 (-16 到 15) 的數字。

當兩個 N 位 2 的補碼數字相加,並且結果太大而無法放入該 N 位組時,就會發生溢位。

計算機包含 N 位固定暫存器。兩個 N 位數字相加的結果最多會產生 N+1 位數字。

進位標誌儲存該額外的位。但進位並不總是表示溢位。

溢位檢測

溢位發生在 -

  • 兩個負數相加的結果為正數,或

  • 兩個負數相加的結果為負數。

因此,可以透過驗證兩個運算元和結果的最高有效位 (MSB) 來檢測溢位。但是,與其實現 3 位比較器,不如只通過驗證來自 MSB 的進位輸入和進位輸出,實現 2 位比較器來檢測溢位。我們考慮 N 位 2 的補碼數的加法。


當進位輸入不等於進位輸出時,就會發生溢位。上述溢位表示式可以透過以下分析來討論。


在第一個圖的情況下,兩個數字的 MSB 為 0,表示它們為正數。這裡,如果進位輸入為 1,我們得到結果的 MSB 為 1,表示結果為負數(溢位),進位輸出為 0。進位輸入不等於進位輸出,因此發生溢位。

在第二個圖的情況下,兩個數字的 MSB 為 1,表示它們為負數。這裡,如果進位輸入為 0,我們得到結果的 MSB 為 0,表示結果為正數(溢位),進位輸出為 1。進位輸入不等於進位輸出,因此發生溢位。

因此,MSB 處的進位輸入和進位輸出足以檢測溢位。


上述異或門可以用來檢測溢位。

更新於: 2020年1月29日

665 次瀏覽

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告