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 +4 的 addition 。
下面显示了 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。