有符号二进制运算



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

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

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

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

示例1

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

下面显示了+7和+4分别用5位表示的**2的补码**。

(+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分别用5位表示的**2的补码**。

(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。因此,两个负数的加法将得到另一个负数。

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

考虑两个以2的补码形式表示的有符号二进制数A和B。我们知道正数的2的补码得到一个负数。因此,每当我们必须从数A中减去数B时,取B的2的补码并将其加到A。因此,**数学上**我们可以写成

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

类似地,如果我们必须从数B中减去数A,则取A的2的补码并将其加到B。因此,**数学上**我们可以写成

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

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

示例1

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

这两个数的减法是

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

下面显示了+7和-4分别用5位表示的**2的补码**。

(+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。

示例2

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

这两个数的减法是

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

下面显示了+4和-7分别用5位表示的**2的补码**。

(+4)10=(00100)2

(7)10=(11001)2

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

这里,没有从符号位获得进位。符号位“1”表示结果和为**负**。因此,通过取其2的补码,我们将得到结果和的大小在十进制数系统中为3。因此,十进制数+4和+7的减法为-3。

广告