数字电子技术基础(微课版)
上QQ阅读APP看书,第一时间看更新

1.3.3 二进制补码的减法运算

1.补码的减法运算

二进制补码的加减运算

我们先利用生活中常见的指针式钟表解释补码运算的原理。如果你在5点钟时发现时针停在10点,需要将其调整到5点,有两种调整方法:一是将时针朝逆时针方向拨5格,调整到5点,即10 - 5 = 5; 二是将时针朝顺时针方向拨7格,调整到5点,即10 + 7 = 17,由于钟表盘的最大数为12,将超过12的“进位”丢掉后,剩下的余数即为需要的结果,即17 - 12 = 5。

由此说明10 - 5可以用10 + 7完成(舍去进位)。由于钟表盘共有12个数,因此称12为进位的模,而5为-7对模12的补码,同样,7为-5对模12的补码。同理,4为-8对模12的补码,8为-4对模12的补码。

这里引入了“模”的概念,用M表示(也写作mod M)。所谓“模”是指一个计数系统的进位基数。例如,钟表的小时从1到12有12个数,它的模是12;1位十进制数为0~9,其模M=10,n位十进制数的模M=10n;n位二进制数的模M=2n

从上述例子中可以得出一个结论:减去某个数可以用加上它的负数的补码来完成,并舍去进位。这个结论同样适用于二进制数的运算。

计算机等数字系统均采用补码进行有符号二进制数的减法运算。

AB均为n位正数,则补码的运算规则如下:

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

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

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

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

进行二进制补码运算时,必须注意以下几点。

(1)参与运算的是补码,运算结果仍是补码。

(2)被加数与加数的补码采用相同的位数,如果运算结果超过了模,产生了进位,则丢弃进位才能得到正确结果。

(3)符号位与数值位一起参与运算,结果的符号位由运算结果确定。

例1.3.7 试用8位二进制补码计算13 - 15。

(13 - 15)= (13)+ (-15)= 00001101 + 11110001= 11111110

在补码系统中,符号位和数值位按同样的规则参加运算,例1.3.7的运算过程如下:从最右边开始,依次将被加数和加数的对应位相加,得到结果的补码为11111110。其符号位为1,说明是负数,其对应的十进制数真实值为-2,结果正确。

2.溢出

例1.3.8 试用4位二进制补码完成下列运算。

(1)4 + 3 (2)-5 - 3 (3)2 + 6 (4)-3 - 6。

下面是具体的运算过程,同时还给出了对应十进制数的运算。仔细分析每一个题目的两种运算结果,发现(1)和(2)的结果正确,而(3)和(4)的补码运算结果是错误的。错误产生的原因在于4位二进制补码中有3位是数值位,所表示的范围为-8~+7。而(3)和(4)的运算结果应分别是+8和-9,均超过了该表示范围,因而产生了溢出。比较4种情况可知,两个符号相反的数相加不会产生溢出,但两个符号相同的数相加有可能产生溢出。如果两个符号相同的数相加时,和的符号与它们的符号不同,则说明运算结果溢出了。