補碼加法,補碼加法計算原理
補碼加法,補碼加法計算原理
負數用補碼表示后,可以和正數一樣來處理。這樣,運算器里只需要一個加法器就可以了,不必為了負數的加法運算,再配一個減法器。
補碼加法的公式是
[x]補+[y]補=[x+y]補? (mod 2) (2.17)
現分四種情況來證明。假設采用定點小數表示,因此證明的先決條件是
︱x︱﹤1, ︱y︱﹤1, ︱x+y︱﹤1。
(1)x﹥0,y﹥0,則x+y﹥0。
相加兩數都是正數,故其和也一定是正數。正數的補碼和原碼是一樣的,可得:
[x]補+[y]補=x+y=[x+y]補 ???? (mod 2)
(2)x﹥0,y﹤0,則x+y>0或x+y<0。
相加的兩數一個為正,一個為負,因此相加結果有正、負兩種可能。根據補碼定義,
∵ [x]補=x, [y]補=2+y
∴ [x]補+[y]補=x+2+y=2+(x+y)
當x+y>0時,2 + (x+y) > 2,進位2必丟失,又因(x+y)>0,
故 [x]補+[y]補=x+y=[x+y]補 ???? ?? (mod 2)
當x+y<0時,2 + (x+y) < 2,又因(x+y)<0,
故 [x]補+[y]補=2+(x+y)=[x+y]補 (mod 2)
(3)x<0,y>0,則x+y>0或 x+y<0。
這種情況和第2種情況一樣,把x和y的位置對調即得證。
(4)x<0,y<0,則x+y<0。
相加兩數都是負數,則其和也一定是負數。
∵ [x]補=2+x, [y]補=2+y
∴ [x]補+[y]補=2+x+2+y=2+(2+x+y)
上式右邊分為“2”和(2+x+y)兩部分.既然(x+y)是負數,而其絕對值又小于1,那么(2+x+y)就一定是小于2而大于1的數,進位“2”必丟失.又因(x+y)<0,所以
[x]補+[y]補=2+(x+y)=[x+y]補 (mod 2)
至此我們證明了,在模2意義下,任意兩數的補碼之和等于該兩數之和的補碼.這是補碼加法的理論基礎,其結論也適用于定點整數
[例8] x=0.1001, y=0.0101,求x+y。
[解:]
[x]補=0.1001,[y]補=0.0101
???
所以 x+y=+0.1110
[例9] x=+0.1011, y=-0.0101,求x+y。
[解:]
[x]補=0.1011,[y]補=1.1011
???
所以 x+y=0.0110
由以上兩例看到,補碼加法的特點,一是符號位要作為數的一部分一起參加運算,二是要在模2的意義下相加,即超過2的進位要丟掉。
非常好我支持^.^
(64) 17.5%
不好我反對
(301) 82.5%
相關閱讀:
( 發表人:admin )