【2017年整理】计算机组成原理第二章2.ppt
文本预览下载声明
1、定点数加减法运算及电路实现
补码的加减法运算,全加器,溢出,快速加法运算(进位链),ALU
2、定点数乘除运算和电路实现
原码、补码,布斯算法,原码恢复余数、不恢复余数
3、快速乘除法运算技术和电路实现
布斯乘法,阵列乘法器,阵列除法器
4、浮点数四则运算以及实现
加减乘除
;加法规则:
先判符号位,若相同,绝对值相加,结果符号不变;若不同,则作减法,|大| - |小|,结果符号与|大|相同。
减法规则:
两个原码表示的数相减,首先将减数符号取反,然后将被减数与符号取反后的减数按原码加法进行运算。;补码加法的公式:; 假设采用定点小数表示,因此证明的先决条件是:
︱x︱﹤1,︱y︱﹤1,︱x+y︱﹤1。;(2) x﹥0,y﹤0,则 x+y0 或 x+y0。
相加的两数一个为正,一个为负,因此相加结果有正、负两种可能。根据补码定义,
∵ [x]补=x, [ y]补=2+y
∴ [x]补+[ y]补=x+2+y=2+(x+y)
当x+y0 时,2+ (x+y) 2,进位2必丢失,又因 (x+y)0,
故 [x]补+[ y]补=x+y=[ x+y]补 (mod 2)
当x+y0时,2 + (x+y) 2,又因 (x+y)0,
故 [x]补+[y]补=2+(x+y)=[x+y]补 (mod 2);(3) x0,y0,则 x+y0或 x+y0。
同(2),把 x 和 y 的位置对调即可。
(4) x0,y0,则 x+y0。
相加两数都是负数,则其和也一定是负数。
∵ [x]补=2+x, [ y]补=2+y
∴ [x]补+[ y]补=2+x+2+y=2+(2+x+y)
因为|x+y|1,1(2+x+y)2,2+(2+x+y) 进位2
必丢失,又因x+y0
故 [x]补+[ y]补=2+(x+y)=[x+y]补 (mod 2); 至此证明了在模2意义下,任意两数的补码之和等于该两数之和的补码。
其结论也适用于定点整数。
补码加法的特点:
(1)符号位要作为数的一部分一起参加运算;
(2)在模2的意义下相加,即大于2的进位要丢掉。;例: x=0.1001,y=0.0101,求 x+y。;补码减法;例: x=+0.1101, y=+0.0110, 求 x-y。;溢出及与检测方法;?????? 解:????? [x]补=0.1011? ?? [y]补=0.1001
??????????????? ?? [x]补??? 0. 1 0 1 1
??????????? ?? +?? [y]补??? 0. 1 0 0 1
???????????? ? ??? [x+y]补???1. 0 1 0 0
????
两个正数相加的结果成为负数,这显然是错误的。;发生错误的原因,是因为运算结果产生了溢出。
两个正数相加:结果大于机器所能表示的最大正数,称为上溢;
两个负数相加:结果小于机器所能表示的最小负数,称为下溢。;2.溢出的检测方法; 一个符号位只能表示正、负两种情况,当产生溢出时,符号位的含义就会发生混乱。如果将符号位扩充为两位(Sf1、Sf2),其所能表示的信息量将随之扩大,既能判别是否溢出,又能指出结果的符号。; ? 任何小于1的正数: 两个符号位都是“0”,即 00.x1x2...xn;
? 任何大于-1的负数:两个符号位都是“1”,即 11.x1x2…xn ; Sf1Sf2 = 00 结果为正数,无溢出
01 结果正溢
10 结果负溢
11 结果为负数,无溢出;??解:??? [x]补=00.1100??? [y]补=00.1000
??????????????? ?? [x]补??? 0 0. 1 1 0 0
????????????? +?? [y]补??? 0 0. 1 0 0 0
???????????? ???????????? 0 1. 0 1 0 0
? 符号位出现“01”,表示已溢出,正溢。即结果大于+1;从上面例中看到:
当最高有效位有进位而符号位无进位时,产生上溢;
当最高有效位无进位而符号位有进位时,产生下溢。
(简单地说是正数相加为负数或负数相加为正数则产生溢出)
故溢出逻辑表
显示全部