首頁  >  文章  >  後端開發  >  二進制數係統 - C/C++中的算術加法溢位?

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

PHPz
PHPz轉載
2023-08-26 22:33:011023瀏覽

2’s補碼數位系統被廣泛應用於電腦體系結構。

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

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

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

當附加2個N位2’s補碼數字且答案太大而無法適應該N位組時,溢位發生在加法方面。

計算機包含N位元固定暫存器。兩個N位數字相加的結果將得到最大的N 1位數字。

進位標誌儲存了額外的位元。但進位並不總是指示溢出。

溢位偵測

當-

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

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

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

二进制数系统 - C/C++中的算术加法溢出?

當進位輸入不等於進位輸出時,溢位發生。上述溢出表達式可以從以下分析中討論。

二进制数系统 - C/C++中的算术加法溢出?

在第一張圖中,兩個數字的最高有效位元為0,表示它們是正數。在這裡,如果進位輸入為1,我們得到結果的最高有效位為1,表示結果為負數(溢位),進位輸出為0。進位輸入不等於進位輸出,因此溢位。

在第二張圖中,兩個數字的最高有效位元為1,表示它們是負數。在這裡,如果進位輸入為0,我們得到結果的最高有效位為0,表示結果為正數(溢位),進位輸出為1。進位輸入不等於進位輸出,因此溢位。

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

二进制数系统 - C/C++中的算术加法溢出?

上述XOR閘可以用來偵測溢位。

以上是二進制數係統 - C/C++中的算術加法溢位?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除