閱讀:0       作者:嚴長生

二進制數的加法和減法:有符號二進制數的加減法

本節我們將討論有符號二進制數的基本算術運算,也即加法和減法。

如果使用原碼表示兩個數,那么在做減法運算時,首先要比較兩個數的絕對值,然后以絕對值大的一個作為被減數,絕對值小的一個作為減數,求出差值,并以絕對值大的一個符號作為差值的符號。不難看出,這個操作過程比較麻煩,而且要使用數字比較電路和減法運算電路。

如果使用補碼表示兩個數,那么就可以使用兩個數的補碼相加來代替上述的減法運算,從而省去比較電路和減法電路,簡化運算器的電路結構。

所以,為了簡化硬件設計,數字電路基本都采用補碼的形式來表示數字。

有符號二進制數的加法

以有符號二進制數 A 和 B 為例,將它們寫成補碼形式后,就可以像無符號數一樣對它們直接進行相加。不過注意,如果符號位產生了進位,必須直接舍棄(忽略)才能得到正確的值。

如果結果的符號位是 0,那么表明是正數,直接取得數字大小即可(正數的補碼和原碼相同);如果符號位是 1,那么表明是負數,必須先把補碼轉換為原碼才能得到正確的值。

例子1

讓我們使用補碼來計算兩個十進制數字 +7 和 +4 的和。|+7| + |+4| = 11,使用四個二進制位才能表示,這是數值位;此外還有一個符號位,所以共需要五個二進制位。
| | 表示求絕對值。
+7 和 +4 的補碼分別是:

(+7)10 = (00111)2
(+4)10 = (00100)2

將兩個數相加:

(+7)10 + (+4)10 = (00111)2 + (00100)2
⇒(+7)10 + (+4)10 = (01011)2

結果包含了五個二進制位,所以符號位沒有產生進位。符號位為 0 表明結果是正數,直接轉換成十進制形式即可,結果為 +11。

例子2

讓我們使用補碼來計算兩個十進制數 -7 和 -4 的和。與上同理,|-7| + |-4| = 11,也需要五個二進制位。

-7 和 -4 的補碼分別是:

(−7)10 = (11001)2
(−4)10 = (11100)2

將兩個數相加:

(−7)10 + (−4)10 = (11001)2 + (11100)2
⇒(−7)10 + (−4)10 = (110101)2

結果包含了六個二進制位,最高位的 1 是符號位相加產生的進位,是多出的一個二進制位,所以直接丟棄。丟棄進位以后的結果是:

(−7)10 + (−4)10 = (10101)2

符號位為 1 表明結果是負數,必須先轉換為原碼才能得到數字的大小。轉換為原碼后的結果是:

(−7)10 + (−4)10 = (11011)2

所以,-7 加 -4 的結果是 -11。

有符號二進制數的減法

以有符號二進制數 A 和 B 為例,我們知道,減去一個數等于加上該數的相反數(符號相反的數稱為“相反數”),也即:

A - B = A + (-B)
B - A = B + (-A)

這樣就可以使用兩個數的加法來代替兩個數的減法。如此一來,加法的規則同樣適用于減法。

例子3

讓我們使用補碼來計算 +7 減去 +4 的差。先將它們轉換成加法形式:

(+7)10 − (+4)10 = (+7)10 + (−4)10

與上同理,|+7| + |-4| = 11,也需要五個二進制位。

使用補碼的形式來計算加法:

(+7)10 = (00111)2
(-4)10 = (11100)2
⇒(+7)10 + (-4)10 = (00111)2 + (11100)2 = (100011)2

結果包含了六個二進制位,最高位的 1 是符號位相加產生的進位,是多出的一個二進制位,所以直接丟棄。丟棄進位以后的結果是:

(+7)10 + (-4)10 = (00011)2

符號位為 0 表明是正數,直接轉換成十進制形式即可,結果為 +3。

例子4

讓我們使用補碼來計算 +4 減去 +7 的差。先將它們轉換成加法形式:

(+4)10 − (+7)10 = (+4)10 + (−7)10

與上同理,|+4| + |-7| = 11,也需要五個二進制位。

使用補碼的形式來計算加法:

(+4)10 = (00100)2
(-7)10 = (11001)2
⇒(+4)10 + (-7)10 = (00100)2 + (11001)2 = (11101)2

結果包含了五個二進制位,所以符號位沒有產生進位。符號位為 1 表明結果是負數,必須先轉換為原碼才能得到數字的大小。轉換為原碼后的結果是:

(+4)10 + (-7)10 = (10011)2

所以,+4 減去 +7 的結果為 -3。
黑龙江22选5开奖结果查询