Digital-electronics 简明教程

Signed Binary Arithmetic

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

Addition of two Signed Binary Numbers

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

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

Example 1

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

下面显示了 5 位表示的 2’s complement +7 和 +4。

\\( (+7) {10} \: = \: (00111) {2} \\)

\\( (+4) {10} \: = \: (00100) {2} \\)

这两个数的加法是

\mathrm{(+7) {10} \: + \: (+4) {10} \: = \: (00111) {2} \: + \: (00100) {2}}

\mathrm{\Rightarrow \: (+7) {10} \: + \: (+4) {10} \: = \: (01011)_{2}}

结果和包含 5 位。因此,符号位没有溢出。符号位 '0' 表示结果和为 positive 。因此,和的大小在十进制数系统中为 11。所以,两个正数相加会得到另一个正数。

Example 2

让我们使用 2 的补码法对两个十进制数 -7-4 执行 addition

-7 和 -4 的 2’s complement 表示(每 5 位)如下所示。

\mathrm{(−7) {10} \: = \: (11001) {2}}

\mathrm{(−4) {10} \: = \: (11100) {2}}

这两个数的加法是

\mathrm{(−7) {10} \: + \: (−4) {10} \: = \: (11001) {2} \: + \: (11100) {2}}

\mathrm{\Rightarrow \: (−7) {10} \: + \: (−4) {10} \: = \: (110101)_{2}}

结果和包含 6 位。在这种情况下,溢出是符号位导致的。因此,我们可以将其移除。

移除溢出后的结果和为 (−7)10 + (−4)10 = (10101)2

符号位 '1' 表示结果和为 negative 。因此,对其采用 2 的补码,我们得到结果和为十进制数系统中的 11。所以,两个负数相加会得到另一个负数。

Subtraction of two Signed Binary Numbers

考虑以 2 的补码形式表示的两个带符号二进制数 A 和 B。我们知道正数的 2 的补码会得到一个负数。因此,每当我们需要从数 A 中减去数 B 时,就采用 B 的 2 的补码并将其加到 A 中。因此, mathematically 我们可以将其写为

A - B = A + (2’s complement of B)

类似地,如果我们需要从数 B 中减去数 A,就采用 A 的 2 的补码并将其加到 B 中。因此, mathematically 我们可以将其写为

B - A = B + (2’s complement of A)

因此,两个带符号二进制数的减法类似于两个带符号二进制数的加法。但是,我们必须采用要减去的数的 2 的补码。这就是 2 的补码技术的 advantage 。遵循两个带符号二进制数加法的相同规则。

Example 1

让我们使用 2 的补码法对两个十进制数 +7 and +4 执行 subtraction

这两个数的减法是

\mathrm{(+7) {10} \: − \: (+4){10} \: = \: (+7) {10} \: + \: (−4)_{10}}

2’s complement 中用 5 位表示 +7 和 -4,如下所示。

\\( (+7) {10} \: = \: (00111) {2} \\)

\mathrm{(+4) {10} \: = \: (11100) {2}}

\mathrm{\Rightarrow \: (+7) {10} \: + \: (+4) {10} \: = \: (00111) {2} \: + \: (11100) {2} \: = \: (00011)_{2}}

在此,从符号位获得了进位。因此,我们可以删除它。除去进位后的结果总和为

\mathrm{(+7) {10} \: + \: (+4) {10} \: = \: (00011)_{2}}

符号位“0”表示结果总和为 positive 。因此,在十进制数系统中的大小为 3。所以,两个十进制数 +7 和 +4 的差为 +3。

Example 2

我们使用 2 的补码法执行 subtraction of 两个十进制数 +4+7

这两个数的减法是

\mathrm{(+4) {10} \: − \: (+7) {10} \: = \: (+4) {10} \: + \: (−7) {10}}

2’s complement 中用 5 位表示 +4 和 -7,如下所示。

\\( (+4) {10} \: = \: (00100) {2} \\)

\mathrm{(-7) {10} \: = \: (11001) {2}}

\mathrm{\Rightarrow \: (+4) {10} \: + \: (-7) {10} \: = \: (00100) {2} \: + \: (11001) {2} \: = \: (11101)_{2}}

在此,未从符号位得到进位。符号位“1”表示结果总和为 negative 。所以,通过计算 2 的补码,小数点后位数在十进制数系统中得到结果总和的大小为 3。因此,两个十进制数 +4 和 +7 的差为 -3。