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