二進位制數系統 - 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 處的進位輸入和進位輸出足以檢測溢位。

上述異或門可以用來檢測溢位。
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP