1、第3章 运算器与运算方法3.2定点加减法运算3.2.1原码定点加、减法 原码表示数据简单易懂,乘除法运算的规则比较简单,但是原码机中的数据进行加减运算的时候,符号位不能直接参加运算,所以在机器上实现稍微复杂一些。原码进行加减法运算时,符号位和数值位是分开的。要先对符号位进行判断。如果是加法运算,就“同号求和,异号求差”;如果是减法运算,就“异号求和,同号求差”。3.2.1原码定点加、减法 例3-1已知X=-0000011B,Y=-0001010B,在原码机中计算X+Y原。解:原码机中,两个加数的形式是X原=10000011,Y原=10001010 判断符号位:Xs=1,Ys=1,两个加数的符号
2、位同号,对数值部分求和 数值部分加法运算:0000011+0001010=0001101 和的机器数:共同符号位在最高位,数值部分在后面。X+Y原=100011013.2.1原码定点加、减法 例3-2已知X=-0000011,Y=-0001010,在原码机中计算X-Y原。解:原码机中,两个运算数的形式是X原=10000011,Y原=10001010 判断符号位:Xs=1,Ys=1,两个数的符号位同号,对数值部分求差。数值部分减法运算,用大的数值位减去小的数值位:0001010-0000011=000111 差的机器数:如果绝对值大的数是被减数,则其符号位为结果的符号位;如果绝对值大的数是减数,
3、则其符号位取反为结果的符号位。数值部分在后面。X+Y原=000001113.2.2补码定点加、减法 原码做加减运算时,数值位和符号位要分别处理,还是比较麻烦的。为了使运算简单化,计算机中广泛采用补码进行加减运算。补码运算的特点是数据位和符号位一起运算。补码的加减法公式是:X+Y补=X补Y补 X-Y补=X补+-Y补3.2.2补码定点加、减法 例3-3X=+0.1010101B,Y=-0.0010011B,求X+Y补和X-Y补。解:X补=0.1010101,Y补=1.1101101,-Y补=0.0010011 X+Y补=0.1010101+1.1101101=0.1000010 X-Y补=0.10
4、10101+0.0010011=0.1101000 例3-4在8位补码机中计算40-12。40补=00101000-12补=11110100 40-12补=00101000+11110100=00011100 40-12补=28补=000111003.2.3溢出及检测溢出及检测 在计算机中,每种数据编码都有其数据表示范围。在运算中发生了数据溢出,则运算结果就不是正确的了。因此,运算器中应设置溢出判断线路和溢出标志位。计算机中溢出的判断通常有以下几种方法:3.2.3溢出及检测溢出及检测(1)根据操作数和运算结果符号位判断 当两个同号数相加或两个异号数相减时,若运算结果与被加数(被减数)的符号不同
5、时,说明发生了溢出。而同号数相减或异号数相加,绝对不会发生溢出。3.2.3溢出及检测溢出及检测(2)采用变形补码(双符号位)判断法 采用变形补码时,正数的符号位是00,负数的符号位是11,若运算结果的符号位为01或10,则发生了溢出。若用S1和S2 表示运算结果的两个符号位,则溢出判断电路的逻辑表达式为:VF=S1 S23.2.3溢出及检测溢出及检测(3)利用数据编码的最高位(符号位)和次高位(数据最高位)的进位状况判断 两个补码数进行加减时,若最高数值位向符号位的进位值Cn-1与符号位产生的进位Cn输出值不一样,则表明产生了溢出。这种溢出判断的逻辑表达式为:VF=Cn-1 Cn3.2.3溢出
6、及检测溢出及检测 例3-5设X=+1011B,Y=+1001B,求X+Y补 X补=01011,Y补=01001,X+Y补=10100 采用操作数和运算结果符号位判断方法,Xs=0,Ys=0,Zs=1,所以,VF=1,结果溢出。采用变形补码运算时,X补=00 1011,Y补=00 1001,X+Y补=01 0100,结果的符号位为01,所以结果溢出。采用第三种方法判断,次高位运算时产生进位,而最高位运算时未产生进位,所以结果溢出。3.2.4补码加减法运算器 补码加减法运算器的组成包括加法器,暂时保存操作数和运算结果的寄存器,以及记录运算结果特征信息的标志寄存器。图3-15为补码加减法运算器的逻辑电路。