前導
數位電路做四則運算(加、減;乘、除)大都只用加法一種運算來完成,以達成減化電路的目的,減法乃利用+補數來完成,乘法用連加或向左移來完成,除法則利用連減或向右移來完成。
二進位減法
1的補數減法
1的補數減法,其步驟如下:
- 取減數 (B) 的 1 的補數:將 B 的每一位反轉 (0 變 1,1 變 0)。
- 將被減數 (A) 和 1 的補數 B 相加。
- 若有進位 (Carry-out),則加回最低位 (End-around carry),稱為端迴進位,其結果以1的補數表示法呈現

範例2: 以1的補數法計算0011(2)-0110(2)。

2的補數減法
2的補數減法,其步驟如下:
- 取減數 (B) 的 2 的補數:
- 先取 1 的補數 (反轉所有位元)。
- 再加 1。
- 將被減數 (A) 和 2 的補數 B 相加。
- 如果最高位產生進位 (Carry-out),則忽略進位,其結果以2的補數表示法呈現,若結果為負數,再取 2 的補數得到正確結果。
範例: 以2的補數法計算1010(2)-0110(2)。

範例2: 以2的補數法計算1110(2)-0011(2)。

加法、乘法與除法
與十進位的觀念大同小異,如下示範:

溢位
當計算機執行算術運算時,若所得的結果超過其位元數所能表示的範圍,則稱為溢位,導致運算結果不正確。
溢位通常發生在有號數的運算中,因為有號數使用 2 的補數來表示。
今天使用 4 位元 (整數範圍 -8 ~ +7) 進行計算,其溢位發生的情況:
- 兩個正數相加發生溢位

- 另一種判斷方式(6 和 5 都是正數,但相加結果是負數,發生溢位。)
- 兩個負數相加發生溢位

- 另一種判斷方式(-5 和 -4 都是負數,但結果是正數,發生溢位。)
溢位判斷的方法,也可藉由溢位旗標(overflow flag;簡稱OF)來檢查運算結果是否溢位。
請觀察下圖:

溢位旗標:

其中:
- Cn表示最高有效位元(MSB)的進位,即C3。
- Cn-1表示次高有效位元(MSB的右邊位元)的進位,即C2。
- 若OF=0,表示運算結果無溢位; 若OF=1,表示運算結果發生溢位,其答案是不正確的。
本頻道持續更新中(內容涵蓋前端程式設計入門、大學必備程式設計入門、電子系專業課程入門、數學微積分題解)如果身旁有相關科系的學生,不妨推薦一下喔~
相信這裡會是家教或線上課程之外,高中、大學生系統性綜合學習的好選擇。
最後感謝您的觀看!