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

在本章中,我们将讨论使用 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。