数字电路 - 有符号二进制算术


在本章中,我们将讨论基本算术运算,可以使用 2 的补码方法对任意两个有符号二进制数执行这些算术运算。基本算术运算是加法和减法。

两个有符号二进制数相加

考虑两个带符号的二进制数 A 和 B,它们以 2 的补码形式表示。我们可以执行这两个数字的加法,这类似于两个无符号二进制数的加法。但是,如果结果和包含从符号位进位,则丢弃(忽略)它以获得正确的值。

如果结果和为正,您可以直接找到它的大小。但是,如果结果和为负,则取其 2 的补码以获得大小。

实施例1

让我们使用 2 的补码方法来执行两个十进制数+7 和 +4 的加法。

+7 和 +4的 2 补码表示形式各为 5 位,如下所示。

(+7) 10 = (00111) 2

(+4) 10 = (00100) 2

这两个数相加就是

(+7) 10 +(+4) 10 = (00111) 2 +(00100) 2

⇒(+7) 10 +(+4) 10 = (01011) 2

所得总和包含 5 位。因此,没有从符号位进位。符号位“0”表示结果和为。因此,和的大小在十进制中是 11。因此,两个正数相加将得到另一个正数。

实施例2

让我们使用 2 的补码方法来执行两个十进制数-7-4的加法。

-7 和 -4 的2的补码表示形式各为 5 位,如下所示。

(−7) 10 = (11001) 2

(−4) 10 = (11100) 2

这两个数相加就是

(−7) 10 + (−4) 10 = (11001) 2 + (11100) 2

⇒(−7) 10 + (−4) 10 = (110101) 2

所得总和包含 6 位。在这种情况下,进位是从符号位获得的。所以,我们可以将其删除

去除进位后的总和为 (−7) 10 + (−4) 10 = (10101) 2

符号位“1”表示结果和为。因此,通过对其取 2 的补码,我们将得到结果和的大小,即十进制数中的 11。因此,两个负数相加将得到另一个负数。

两个有符号二进制数的减法

考虑两个带符号的二进制数 A 和 B,它们以 2 的补码形式表示。我们知道,2 的正数的补码给出负数。因此,每当我们需要从数字 A 中减去数字 B 时,然后取 B 的 2 补码并将其与 A 相加。因此,从数学上讲,我们可以将其写为

A - B = A + (B 的 2 补码)

类似地,如果我们必须从数字 B 中减去数字 A,然后取 A 的 2 的补码并将其添加到 B。因此,从数学上讲,我们可以将其写为

B - A = B + (A 的 2 补码)

因此,两个有符号二进制数的减法类似于两个有符号二进制数的加法。但是,我们必须取该数的 2 补码,该数应该被减去。这就是2的补码技术的优点。遵循两个有符号二进制数相加的相同规则。

实施例3

让我们使用 2 的补码方法来执行两个十进制数+7 和 +4的减法。

这两个数相减就是

(+7) 10 − (+4) 10 = (+7) 10 + (−4) 10

+7 和 -4 的2补码表示各 5 位,如下所示。

(+7) 10 = (00111) 2

(+4) 10 = (11100) 2

⇒(+7) 10 +(+4) 10 =(00111) 2+ (11100) 2 =(00011) 2

这里,进位是从符号位获得的。所以,我们可以将其删除。去除进位后的总和为

(+7) 10 + (+4) 10 = (00011) 2

符号位“0”表示结果和为。因此,它的大小在十进制中是 3。因此,两个十进制数+7和+4相减是+3。

实施例4

让我们使用 2 的补码方法来执行两个十进制数+4+7的减法。

这两个数相减就是

(+4) 10 − (+7) 10 = (+4) 10 + (−7) 10

+4 和 -7 的2补码表示各 5 位如下所示。

(+4) 10 = (00100) 2

(-7) 10 = (11001) 2

⇒(+4) 10 +(-7) 10 =(00100) 2+ (11001) 2 =(11101) 2

这里,进位不是从符号位获得的。符号位“1”表示结果和为。因此,通过对其取 2 的补码,我们将得到结果和的大小,即十进制数中的 3。因此,两个十进制数+4和+7相减为-3。