📅  最后修改于: 2020-12-30 04:32:31             🧑  作者: Mango
在上一节中,我们学习了如何使用1的补码执行算术运算,例如加法和减法。在本节中,我们将学习使用2的补码执行这些操作。
当我们使用2的补码添加两个二进制数时,可能存在三种不同的情况,如下所示:
情况1:当正数幅度较大时,将正数与负数相加。
最初找到给定负数的2的补码。用给定的正数求和。如果获得末端进位进位1,则该数字将为正数,进位位将被丢弃,其余位为最终结果。
示例:1101和-1001
情况2:当负数幅度较大时,将正值与负值相加。
最初,将一个正值与负数的2的补码值相加。在这里,没有发现端到端进位。因此,我们采用结果的2的补数得到最终结果。
注意:结果为负值。
示例:1101和-1110
情况3:两个负数的加法
在这种情况下,首先找到两个负数的2的补数,然后将这两个补数相加。在这种情况下,我们将始终获得末端进位进位,该进位将被添加到LSB中,而忘记了最终结果,我们将获得结果的2的补码。
注意:结果为负值。
示例:五位寄存器中的-1110和-1110
以下是使用2的补码减去两个二进制数的步骤
范例1: 10101-00111
我们采用子代数00111的2的补码,即11001。现在,求和。所以,
10101 + 11001 = 1 01110。
在上面的结果中,我们得到进位位1。因此,我们丢弃该进位位,剩下的就是最终结果和一个正数。
范例2: 10101-10111
我们用减去补码10111的2的补码得出01001。现在,我们将两个数字相加。所以,
10101 + 01001 = 11110。
在以上结果中,我们没有得到进位位。因此,计算结果的2的补数,即00010。它是负数和最终答案。