定点补码的加减法运算在计算机中,凡是带符号的数一律用补码表示,其结果也是用补码表示,若结果的符号位为“0”表示正数,得到的是补码即原码,数值部分前加“+”号即为真值。若结果的符号位为“1”表示负数,得到的是补码,这时如果要求真值,需要对结果的补码再求补码,变成原码,在数值部分前加上“-”号才为真值。一、定点补码的加法运算规则:[X]补+[Y]补=[X+Y]补(mod2n)式中,-2n-1≤X2n-1;-2n-1≤Y2n-1;-2n-1≤X+Y2n-1例:已知X=+0010011B,Y=-0000111B,求X+Y[X]补=00010011(+19的补码)+)[Y]补=11111001(-7的补码)[X+Y]补=[1]00001100(+12的补码)丢失符号位例:已知:X=-0011001B,Y=-0000110B,求X+Y[X]补=11100111(-25的补码)+)[Y]补=11111010(-6的补码)[X+Y]补=[1]11100001(-31的补码)丢失符号位注意:符号位为1表明结果为负,符号位之前的1是由符号位进位上来的,为模自动丢失。如将[X+Y]补=11100001再求一次补码得到[X+Y]原=10011111B,即X+Y=-0011111B(-31)结论:当-2n-1≤X2n-1;-2n-1≤Y2n-1;-2n-1≤X+Y2n-1时,在模2n的意义下(模2n自然丢失),任意两个数的补码之和等于该两数和的补码,并且把数的符号位当做数的一部分参加运算。如果从符号位有进位发生,则将该位1自动丢失。二、定点补码的减法运算规则:[x-y]补=[X+(-Y)]补=[X]补+[-Y]补(mod2n)式中,-2n-1≤X2n-1;-2n-1≤Y2n-1;-2n-1≤X-Y2n-1[-Y]补=[[Y]补]变补=[[Y]补]求补求补:只要将[Y]补连同符号位一起求反加1,即求一个符号位相反而绝对值相等的数。例:X=+1100000B,Y=+0010011B,求X-Y[X]补=[X]原=01100000[Y]补=[Y]原=00010011[X]补=01100000(+96的补码)+[-Y]补=11101101(-19的补码)[X-Y]补=[1]01001101(+77的补码)丢失符号位例:X=-0111000B,Y=-0010001B,求X-Y[X]原=10111000[X]补=11001000[Y]原=10010001[y]补=11101111[X]补=11001000(-56的补码)+[-y]补=00010001(+17的补码)[X-Y]补=11011001(-39的补码)[X-Y]原=10100111,结果X-Y=-0100111B三、不带符号数的运算不带符号数(或称为无符号数)实际上是指参加运算的操作数均为正数,且整个字长全部用于表示数值部分。1、当两个n位不带符号数相加,由于X,Y都是正数,因此X+Y的和也为正数,当和超过字长n位所允许的范围时,就向更高位进位,这时必须采用多字节来表示。2、无符号数相减,其值的符号位取决于两数绝对值的大小。1)若XY,则X-Y无借位,差值为正,[x-y]补=[X]补+[-Y]补的和必大于2n,最高位有进位,其所得到的和即是X-Y的原码。例:已知X=+01000000,Y=+00001010,求X-Y[X]补=[X]原=01000000[Y]补=[Y]原=00001010[-Y]补=11110110[X]补=01000000(+64的补码)+[-Y]补=11110110(-10的补码)[X-Y]补=100110110(+54的补码)自动丢失,有进位,无借位,表示结果为正数。2)若XY,则X-Y有借位,差值为负,[x-y]补=[X]补+[-Y]补的和必小于2n,最高位无进位,其所得到的和是(X-Y)=-(Y-X)的补码。例:已知Y=+01000000,X=+00001010,求X-Y[X]补=[X]原=00001010[Y]补=[Y]原=01000000[-Y]补=11000000[X]补=00001010(+10的补码)+[-Y]补=11000000(-64的补码)[X-Y]补=011001010(-54的补码)无进位表示有借位,结果为负数。所以:X-Y=-00110110B