1.3 算术运算
当两个二进制数码表示两个数量大小时,它们之间可以进行数值运算,这种运算称为算术运算。数字系统一个重要的功能就是可以对用二进制码表示的数进行各种算术运算,掌握二进制数的基本运算,有助于了解这些运算电路的工作原理和设计过程。
1.二进制加法
任意两个二进制数(不论在什么位置)相加,只可能出现4种情况。它们是:
0+0=0 1+0=0+1=1 1+1=10=0+向高一位的进位1
1+1+1=11=1+向高一位的进位1
最后一种情况是当本位相加的两个数都为1,并且从前一位得到一个进位1时发生的。
以下是一些二进制数相加的例子(括号里为等值的十进制数):
现代的数字计算机只需几纳秒便能完成一次加法运算。在所有的数字系统中,电路在同一时间只能进行两个数的相加,所以不用考虑两个以上二进制数同时相加的情况。当多于两个数相加时,只需将前两个数先加到一起,其和再与第三个数相加,依次类推。
加法是数字系统中最重要的一种运算,在绝大多数的现代数字计算机和计算器中所进行的减法、乘法和除法运算,其实都是基于加法运算实现的。
2.有符号数的表示方法
数字系统中,表示二进制数的方法有三种,即原码、反码和补码。在数字计算机中,二进制数的运算常使用的是二进制数的补码系统。二进制数的补码是这样定义的:最高位为符号位,正数为0,负数为1;正数的补码和它的原码相同;负数的补码可通过将原码的数值位逐位取反,然后在最低位上加1得到。
用补码系统来表示有符号数,可以实现用加法来完成减法的运算,这样数字计算机就可以用相同的电路完成加法和减法运算,从而节省了硬件。
用补码系统表示有符号数的过程如下:如果是正数,数值就用其真实二进制形式,在最高位(MSB)前面的符号位上用0表示,如图1.1中对(+45)10的表示。如果是负数,那么数值就用其补码形式表示,并在最高位前面的符号位上用1表示,如图1.1中对(-45)10的表示。
图1.1 用补码系统表示有符号数
3.补码系统中的加法
这里介绍用补码表示的负数在数字设备中是如何进行加法运算的,在考虑各种不同情况时,要特别注意每个数的符号位同数值位一样要参加运算。
(1)两个正数相加
两个正数的加法直接进行。例如,+9和+4相加:
注意,其中被加数和加数的符号位都为0,和数的符号位也是0,说明和为正数。另外,被加数和加数的位数要一致。这在补码系统中是必需的。
(2)正数与一个比它小的负数相加
例如,+9和-4相加。记住:-4要用补码形式表示,所以+4(00100)必须转换成-4(11100)。
在这种情况下,加数的符号位是1。注意符号位也参加了加法运算的过程。事实上,在加法的最高位产生了一个进位。这个进位是要被忽略的,所以最后的和为00101,等于+5。
(3)正数与比它大的负数相加
例如,-9和+4相加:
这里和的符号位是1,所以是个负数。因为和是负数,它是补码形式,所以最后的4位1011,其实是和的补码。为了求出和数的真实值,必须对11011求相反数(2的补码);结果00101=+5。所以11011表示-5。
(4)两个负数相加
例如,-9和-4相加:
这个最后的结果也是负数,并且也是符号位为1的补码形式。求相反数(求2的补码)后,结果为01101=+13。