问答题
真值X、Y均为(n-1)位二进制数(可正可负),试证明在字长为n位的存数单元中操作时,有[X]补+[Y]补=[X+Y]补。
【正确答案】分4种情况,即X≥0,Y≥0;X或Y≥0,Y或X<0但X+Y≥0;X或Y≥0,Y或X<0但X+Y<0;X<0,Y<0来分别证明。
(1)当X≥0,Y≥0,若满足2n-1>(X+Y)≥0时,有
[X]补=X (X≥0)
[Y]补=Y (Y≥0)
[X]补+[Y]补=X+Y=[X+Y]补 (mod 2")
(2)当X≥0,Y<0,若满足2n-1>(X+y)≥0时,由补码定义可得
[X]补=X (X≥0)
[Y]补=2n+Y (Y<0)
[X+Y]补=X+Y (X+Y≥0)
有 [X]补+[Y]补=X+2n+Y=X+Y (X+Y≥0)
所以 [X]补+[Y]补=[X+Y]补 (mod 2")
(3)当X≥0,Y<0,若满足0≥(X+Y)≥-2n-1时,由补码定义可得
[X]补=X (X≥0)
[Y]补=2n+Y (Y<0)
[X+Y]补=2n+(X+Y)(X+Y≤0)
有 [X]补+[Y]补=X+2n+Y=2n+(X+Y)
所以 [X]补+[Y]补=[X+Y]补 (mod 2")
(4)当X<0,Y<0,若满足0>(X+Y)≥-2n-1时,由补码定义可得
[X]补=2n+X (X<0)
[Y]补=2n+Y (Y<0)
[X+Y]补=2n+(X+Y)(X+Y<0)
有 [X]补+[Y]补=2n+X+2n+Y=2n+(X+Y) (其中一个2n产生一个进位而舍去),所以
[X]补+[Y]补=[X+Y]补 (mod 2")
综上,当2n-1>X≥-2n-1,2n-1>Y≥-2n-1,且2n-1>(X+Y)≥-2n-1时,有
[X]补+[Y]补=[X+Y]补 (mod 2")
此例说明,在进行补码加法运算时,不论相加两数的真值是正还是负,只要把它们表示成相应的补码形式,直接相加,其结果一定与真值直接相加后的补码是相等的。
【答案解析】