0减0给出加减法电路中的1进位

问题描述 投票:0回答:1

full adder circuit

在以“ M”输入作为减法标志的加减法设计中,0减0似乎提供了不正确的Cout。为了简单起见,我们假设这里仅使用一个完整的加法器(忽略A1 / B1,A2 / B2,A3 / B3),并且M = 1A0 = 0A1 = 0

完整的加法器将获得以下输入:

0 (B0) XOR 1 (M) = 1

0 (A0) = 0

1 (M) = 1

这将导致1 +1= 0,其中Cout = 1-但对于完整加法器,Cout应该等于0:

full adder truth table

我认为将最终的Cout反相将提供正确的结果,但是我在网上寻找的所有加减法器电路都没有最终的Cout的反相器。此电路是否应在最后的Cout处安装逆变器以解决此问题?

twos-complement digital-logic
1个回答
0
投票

在这种情况下,等于1的进位是完全正常的。

当使用无符号逻辑时,进位被用作溢出标志:假设您使用的是4位操作数,则该操作:

a = 1000, b = 1001 (Decimal a = 8, b = 9)

  1000 +
  1001 =
--------
1 0001

产生1'b1的进位,因为8+9的结果不能用4位表示。

另一方面,当使用符号逻辑时,进位信号失去其“溢出”的含义。让我们举个例子:

a = 0111, b = 0010 (Decimal a = 7, b = 2)

  0111 +
  0010 =
--------
0 1001

在这种情况下,结果为1001,即二进制补码中的-7。显然,我们溢出了,因为我们加了两个正数,而得到了负数。无论如何,进位等于0。最后一种情况,如果我们考虑:

a = 1111, b = 0001 (Decimal a = -1, b = 1)

  1111 + 
  0001 =
--------
1 0000

我们看到即使结果正确-1+1=0,也设置了进位。

总而言之,如果您使用有符号逻辑,并且需要了解是否有溢出,则需要对照结果的两个来检查两个操作数的符号。

  • 两个操作数均为正(MSB = 0),结果均为负(MSB = 1):溢出
  • 两个操作数均为负(MSB = 1),结果为正(MSB = 0):溢出
  • 其他任何情况:无溢出
© www.soinside.com 2019 - 2024. All rights reserved.