首页 理论教育计算机导论:二进制数的运算方法

计算机导论:二进制数的运算方法

【摘要】:但要求二进制数采用一种称为补码的表示方法。补码是把二进制的正数和负数表示成一种统一的取掉符号的纯数值形式。一个二进制数的补码由两部分组成。表2-3给出了长度为3的二进制数的补码。因此,计算机中是用补码加法运算代替二进制数的加法和减法运算的。这样,计算机硬件只需设计出实现两个二进制数相加的加法器,就可以实现算术的四则运算。

1. 二进制数加法和减法

两个一位二进制数进行加法时只可能有四种情况,即0+0=0,0+1=1,1+0=1,1+1=10。两个多位二进制数进行加法时存在进位,对每位来说,相当于三个一位二进制数进行加法,共有八种情况,即0+0+0=0,0+0+1=1,0+1+0=1,1+0+0=1,0+1+1=10,1+0+1=10,1+1+0=10, 1+1+1=11。

【例2-4】 求10110011+111001。

解:

因此,10110011+111001=11101100。

两个一位二进制数进行减法时只可能有四种情况,即0-0=0,1-0=1,1-1=0,0-1时不够减,需要向高位借位,借位后有10-1=1。

【例2-5】 求110011-11101。

解:

因此,110011-11101=10110。

2.补码

十进制数四则运算一样,二进制数四则运算也有加、减、乘、除。要在计算机中实现二进制数四则运算,计算机中就应该有加法装置、减法装置、乘法装置和除法装置。我们知道,乘法运算可以用若干次加法运算实现,除法运算可以用若干次减法运算实现。这样,为简化计算机硬件设计的复杂性,硬件就可以不包含乘法装置和除法装置。

是否还可以取掉减法装置呢?回答是肯定的。但要求二进制数采用一种称为补码的表示方法。补码是把二进制的正数和负数表示成一种统一的取掉符号的纯数值形式。

一个二进制数的补码由两部分组成。一部分是数值部分,取值方法为:当二进制数为正数时,其补码的数值部分和该二进制数相同;当二进制数为负数时,其补码的数值部分为用高位为1、低位为0的足够大的二进制数减去该数的差。另一部分是符号位,当二进制数为正数时,符号位为0;当二进制数为负数时,符号位为1。

按照补码的定义,得到正数的补码方法非常简单,例如,正数1011的补码就是01011,前面最高位的0表示原二进制数为正数。而得到负数的补码方法稍为复杂一些。

【例2-6】 求﹣1011的补码。

解:补码的数值部分为:

因此,﹣1011的补码为10101,前面最高位的1是补码的符号位。

实际上,计算机实现时有非常简单的直接把一个二进制数表示为补码的方法。具体方法是:当二进制数为正数时,其补码的数值部分和该二进制数相同,符号位为0;当二进制数为负数时,其补码的数值部分为先把该二进制数各位的0变为1,1变为0,然后再加1,符号位为1。如例2-6中的﹣1011的补码求法是:

第一步:求反,1011变为0100。

第二步:加1,0100+1=0101。

所以,﹣1011的补码为10101,这和例2-6求出的结果相同。

表2-2给出了长度为2的二进制数的补码。表2-3给出了长度为3的二进制数的补码。

表2-2 长度为2的二进制数的补码

表2-3 长度为3的二进制数的补码

3. 补码的运算

对于补码来说,不仅两个二进制数的加法运算可以用补码的加法来实现,而且两个二进制数的减法运算也可以用补码的加法来实现。补码运算不仅用加法实现了减法,而且实现了正号和负号的数字化表示。补码运算的基本公式是:(www.chuimin.cn)

[x+y]=[x]+[y]

上式表示,两个二进制数相加后的补码等于这两个二进制数分别求补码后再相加。这个公式的证明并不难,有兴趣的读者可自己证明。

【例2-7】 用补码求1001+0011。

解:

可见,补码加法和二进制加法得到的结果相同。

【例2-8】 用补码求1001-1011。

解:减去一个数等于加上该数的负数,因此可把减数表示为负数。

可见,补码加法和二进制减法得到的结果相同。

【例2-9】 用补码求﹣1000-0011。

解:

可见,补码加法和两个二进制负数相加得到的结果相同。

从上面的例子可见,补码有两个重要特点:

(1)二进制的加法运算和减法运算都转换成了补码的加法运算。

(2)符号位直接参加运算。

因此,计算机中是用补码加法运算代替二进制数的加法和减法运算的。

当用补码求出运算结果后,把补码再变为二进制数的方法是:当符号位为0时,相应的二进制数为正数,其数值部分为该补码的数值部分,例如,补码00011的二进制数为+0011;符号位为1时,相应的二进制数为负数,其数值部分为再次对该补码的数值部分求补码的结果,例如,补码10101的二进制数为﹣1011。

这样,对于数值的四则运算来说,可以用只包含加法操作的一个算法来实现乘法,用只包含减法操作的一个算法来实现除法,用补码编码方法来实现减法。这样,计算机硬件只需设计出实现两个二进制数相加的加法器,就可以实现算术的四则运算。

输入和输出过程的计算机实现加法和减法运算的完整过程为:

(1)把用户输入的十进制数转换为二进制数;

(2)把二进制数转换为补码;

(3)实现补码加法;

(4)把补码形式的运算结果转换为二进制数;

(5)把二进制数转换为十进制数输出给用户。

在以上各步骤中,除完成补码加法操作的任务由硬件中的加法器实现外,其余任务一般均用软件实现。