数字电路 - 有符号二进制算术
在本章中,我们将讨论使用 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。