首页 理论教育 二进制算术运算

二进制算术运算

时间:2022-02-12 理论教育 版权反馈
【摘要】:二进制运算是所有数字计算机和很多数字系统实现的基础,包括算术运算和逻辑运算两种运算。所以在计算机中,常用二进制补码的加法运算来代替直接的二进制减法运算,将在下面介绍。其中,解答左侧是二进制乘法运算,右侧是十进制乘法运算作为参考。带符号的二进制数实质上就是数值的一种编码表示,称为机器数。进行补码加法运算时符号和数值位同时参加运算,当符号位在相加时产生进位,则将该进位“1”去掉即可。

二进制运算是所有数字计算机和很多数字系统实现的基础,包括算术运算和逻辑运算两种运算。为了全面理解数字系统,必须理解二进制加、减、乘、除四则运算的规则,本节提供一些未来学习中可能出现的运算介绍。

1. 二进制加法

二进制加法四种基本运算规则如下所示:

0 + 0 = 0  0与0求和为0,无进位

0 + 1 = 1  0与1求和为1,无进位

1 + 0 = 1  1与0求和为1,无进位

1 + 1 = 10  1与1求和为0,有进位,进位为1

【例5 − 2 − 7】求解以下二进制数的和值。

(a) 11+11  (b) 111+11

其中,解答左侧是二进制加法运算,右侧是十进制加法运算作为参考。

2. 二进制减法

二进制减法四种基本运算规则如下所示:

0 − 0 = 0  0与0求差为0,无借位

1 − 1 = 0  1与1求差为0,无借位

1 − 0 = 1  1与0求差为1,无借位

10 − 1 = 1  0与1求差为1,有借位,借位为1

【例5 − 2 − 8】求解以下二进制数的差值。

(a) 11 − 01  (b) 101 − 10

其中,解答左侧是二进制减法运算,右侧是十进制减法运算作为参考。(a)为无借位的情况, (b)为有借位的情况。可以看出,二进制减法运算相对比较复杂,首先要比较两个数的大小,判断差的正负,再进行大数减小数的减法运算。所以在计算机中,常用二进制补码的加法运算来代替直接的二进制减法运算,将在下面介绍。

3. 二进制乘法

二进制乘法四种基本运算规则如下所示:

0×0 = 0 0与0乘积为0

0×1 = 0 0与1乘积为0

1×0 = 0 1与0乘积为0

1×1 = 1 1与1乘积为1

【例5 − 2 − 9】求解以下二进制数的乘积。

(a) 11×11 (b) 101×110

其中,解答左侧是二进制乘法运算,右侧是十进制乘法运算作为参考。二进制乘法与十进制乘法是类似的,这个过程需要部分积的参与,每次有部分乘积的时候左移一位,最后把所有的部分积相加得到最终乘积结果。从这里可以看出二进制的乘法其实就是移位和加法运算,在计算机内部就是这样进行算术乘法运算的。

4. 二进制除法

二进制除法与十进制除法有着相同的过程,参见下面的例子。

【例5 − 2 − 10】求解以下二进制数的除法。

(a) 110÷10  (b) 1001÷11

二进制除法实质上就是右移位和减法,可以用移位和补码加法来完成。

5. 原码、反码和补码

数字系统,比如计算机,必须有处理正负数的能力,一个有符号的二进制数包括符号和数值两部分。符号位表示了数的正与负,通常在二进制数的左边增加一位作为该数的符号位, 0表示正数,1表示负数,如:有符号二进制数1001表示“− 1”,0101表示“+5”。

带符号的二进制数实质上就是数值的一种编码表示,称为机器数。常用的机器数有三种表示形式:原码、反码和补码。

(1)原码:二进制数由符号位加上数值本身。

如:十进制数+20的原码表示为010100, − 20的原码表示为110100。左边为该数的符号位,右边为该数的绝对值大小。

(2)反码:正数的反码与原码相同,负数的反码可以由原码求得:原码的符号位不变,数值位按位取反。

如:+20的反码表示为010100, − 20的反码表示为101011。

(3)补码:正数的补码与原码相同,负数的补码为反码加1。

如:+20的补码表示为010100, − 20的补码表示为101100。

减法可以看成是一个正数和一个负数相加,因此数字电路中的减法运算可以用补码加法来实现。

补码加法运算的规则是:两个补码的和也是补码。进行补码加法运算时符号和数值位同时参加运算,当符号位在相加时产生进位,则将该进位“1”去掉即可。

【例5 − 2 − 11】求解以下二进制数补码的运算。

(a) 00001000 − 00000101  (b) 1100+0100

解:(a)8−5=8+(−5)=3   (b) 12+4=16

从上例运算可以看出,补码进行加、减法运算更加方便,这里需要指出的是例子(b)中假如参与运算的字长为4位,那么加法操作后溢出位“1”就会被丢弃,假如是5位字长参与运算就会得到正确的运算结果。因此在做补码运算的时候要考虑实际需要的字长,才不会产生溢出丢弃有效数据的现象。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈