1. 程式人生 > >有符號數二進位制補碼加減運算

有符號數二進位制補碼加減運算

      在電路設計時,為了簡化設計,加減法電路用同一個電路實現。這就需要參與運算的運算元用補碼錶示。

       對於正數,原碼,反碼,補碼相同。

      而對於負數,原碼符號位為1,其餘各位此數的絕對值;反碼是在除去符號位的基礎上取反;補碼則為除去符號位,在反碼的基礎上加1。若反碼數值位加1超出數值位表示的範圍,不管進位,最高位依舊是符號位。例如-8的原碼為11000,反碼10111,補碼11000,若為4位,-8補碼為1000。

     對於負數的加法,要將負數轉換為它的補碼再相加。兩個無符號補碼數相加,得到的結果仍舊是補碼。如:

    

其中,-3的4位補碼為1101,-5的4位補碼為1011,-8的補碼1000,擴充套件了1位符號位。

-6的補碼為1010,-5的補碼為1011.

        補碼相加,有兩種情況會產生溢位,計算結果出錯。一是輸出位數不夠表示和的範圍,另一種是低位進位輸入和高位進位輸出不同(1和0或者0和1),會出錯。如下:


       由於溢位結果出現錯誤,怎麼處理。請大家共同討論,目前還不是很清楚