📌  相关文章
📜  数字电子产品中使用2的补码进行加法和减法

📅  最后修改于: 2020-12-30 04:32:31             🧑  作者: Mango

使用2的补码加减法

在上一节中,我们学习了如何使用1的补码执行算术运算,例如加法和减法。在本节中,我们将学习使用2的补码执行这些操作。

使用2的补码加法

当我们使用2的补码添加两个二进制数时,可能存在三种不同的情况,如下所示:

情况1:当正数幅度较大时,将正数与负数相加。

最初找到给定负数的2的补码。用给定的正数求和。如果获得末端进位进位1,则该数字将为正数,进位位将被丢弃,其余位为最终结果。

示例:1101和-1001

  • 首先,找到负数1001的2的补码。因此,要找到2的补数,请将所有0更改为1,将所有1都更改为0或找到数字1001的1的补码。数字1001的1的补码为0110,并且在结果0110的LSB中加1。因此,数字1001的2的补码为0110 + 1 = 0111
  • 将两个数字相加,即1101和0111; 1101 + 0111 = 1 0100
  • 通过将两个数字相加,我们得出末端进位1。因此,两个数字的总和为0100。

情况2:当负数幅度较大时,将正值与负值相加。

最初,将一个正值与负数的2的补码值相加。在这里,没有发现端到端进位。因此,我们采用结果的2的补数得到最终结果。

注意:结果为负值。

示例:1101和-1110

  • 首先,找到负数1110的2的补数。因此,要找到2的补数,请将1的补数的LSB加1。0001 + 1 = 0010
  • 将两个数字相加,即1101和0010; 1101 + 0010 = 1111
  • 找到作为最终结果的结果1110的2的补数。因此,结果1110的2的补数为0001,并在数字前添加一个负号,以便我们可以识别出它是一个负数。

情况3:两个负数的加法

在这种情况下,首先找到两个负数的2的补数,然后将这两个补数相加。在这种情况下,我们将始终获得末端进位进位,该进位将被添加到LSB中,而忘记了最终结果,我们将获得结果的2的补码。

注意:结果为负值。

示例:五位寄存器中的-1110和-1110

  • 首先找到负数01101和01110的2的补码。因此,为了找到2的补码,我们在这些数字的1的补码的LSB中加1。数字01110的2的补码为10010,而01101为10011。
  • 我们将两个补码相加,即10001和10010; 10010 + 10011 = 1 00101
  • 通过将两个数字相加,我们得到末端进位进位1。此进位被舍弃,最终结果是结果00101的2.s补数。因此,结果00101的2的补数是11011,我们加上了负数在数字前签名,以便我们可以识别出它是负数。

用2的补码相减

以下是使用2的补码减去两个二进制数的步骤

  • 在第一步中,找到次差的2的补码。
  • 将补数和减数相加。
  • 如果我们通过将两个数字相加得到进位,则我们放弃此进位,结果为正,否则取结果的2的补数,结果为负。

范例1: 10101-00111

我们采用子代数00111的2的补码,即11001。现在,求和。所以,

10101 + 11001 = 1 01110。

在上面的结果中,我们得到进位位1。因此,我们丢弃该进位位,剩下的就是最终结果和一个正数。

范例2: 10101-10111

我们用减去补码10111的2的补码得出01001。现在,我们将两个数字相加。所以,

10101 + 01001 = 11110。

在以上结果中,我们没有得到进位位。因此,计算结果的2的补数,即00010。它是负数和最终答案。