我正在編寫一個C++程序來模擬一個16位虛擬機。我有一個函數'addc',我必須檢查溢出。我有點失去了溢出的條件。我知道當你添加2個正數並且你得到一個負數時,或者當你添加2個負數時你會得到一個正數。但是,在我的addc函數中,我必須添加3個數字。我正確地處理這個問題嗎?檢查溢出的addc函數
我的功能應該這樣做:
目標寄存器=目標寄存器+寄存器源+進位
(RD = RD + RS + C)
到目前爲止,檢查溢出,我有這個代碼..
//Check when adding positive numbers gives negative result
//My carry bit is always positive (either 0 or 1)
if(rd >= 0 and rs >= 0 and c >= 0) and ((rd + rs + c) < 0)){
//set overflow bit
}
else if(rd < 0 and rs < 0 and c < 0) and (rd + rs + c) > 0)){
//set overflow bit
}
我的困惑是爲其他條件。 C總是0或1,所以它永遠不會進入else if循環,所以幾乎沒有理由擁有else if循環。我做對了嗎?或者我必須將進位位(c)加到其中一個操作數(rd或rs),所以我只有兩個操作數進行比較。喜歡這個?
else if(rd < 0 and ((rs + c) < 0)) and (rd + (rs + c)) > 0)){
//set overflow bit
}