有符号二进制运算



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

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

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

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

示例1

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

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

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

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

这两个数的加法是

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

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

结果和包含5位。因此,没有来自符号位的进位。符号位“0”表示结果和为**正**。因此,和的大小在十进制数系统中为11。因此,两个正数的加法将得到另一个正数。

示例2

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

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

$$\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”表示结果和为**负**。因此,通过取其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**的**减法**。

这两个数的减法是

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

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

$$\mathrm{(+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”表示结果和为**正**。因此,其大小在十进制数系统中为3。因此,十进制数+7和+4的减法为+3。

示例2

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

这两个数的减法是

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

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

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

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

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

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

广告