第三讲 定点运算(加减法)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

4 、溢出概念与检测方法
引入:可能产生溢出的情况:
•两正数加,变负数,正溢(大于机器所能表示的 最大数) •两负数加,变正数,负溢(小于机器所能表示的 最小数)
溢出判断方法
(1) 一位符号位判溢出
参加操作的 两个数(减法时即为被减数和“求补” 以后的减数)符号相同,其结果的符号与原操作
数的符号不同,即为溢出
10100110
二、补码加/减法
1.原码加/减法运算
加法规则: 先判符号位,若相同,绝对值相加,结果符号不变; 同,则作减法, |大| - |小|,结果符号与|大|相同。 若不
减法规则:
两个原码表示的数相减,首先将减数符号取反,然后将被 减数与符号取反后的减数按原码加法进行运算。
公式:[x]补+[y]补 =[x+y]补 证明:假设︱x︱﹤1, ︱y︱﹤1, ︱x+y︱﹤1 现分四种情况来证明 (1)x﹥0,y﹥0,则x+y﹥0 [x]补=x, [y]补=y, [x+y]补=x+y 所以等式成立. (2)x﹥0,y﹤0,则x+y>0或x+y<0 [x]补=x, [y]补=2+y, [x]补+[y]补=x+ 2+y 当x+y>0时,2 + (x+y) > 2,进位2必丢失,又因 (x+y)>0, 故 [x]补+[y]补=x+y=[x+y]补 当x+y<0时,2 + (x+y) < 2,又因(x+y)<0, 故 [x]补+[y]补=2+(x+y)=[x+y]补 所以上式成立
x0 y0 判断 电路
FA
z0
V
(1) 单符号位法
V=Sf1⊕Sf2
c 0 x 0 y 0 c 1 x1 FA y1 z 1 V z 0
V=C1⊕Co
c0
x0 y0 FA z0 V z1
FA
c1
x1 y1 FA
(2) 双符号位法
(3) 进位值判别法
四. 补码加减法的硬件配置
基本补码加法减法器
行波进位补码加法减法器
移位操作 移位前 左移一位 左移两位
右移一位 右移两位
机 器 数 [A]原=[A]补 =[A]反 0,0011010 0,0110100 0,1101000 0,0001101 0,0000110
对应的真值 +26 + 52 +104 +13 +6
例17
设机器数字长为 8 位(含1位符号位),写出 A = –26时,三种机器数左、右移一位和两位后的表
补码
移位操作



对应的真值
移位前 左移一位
左移两位 右移一位 右移两位
1,1100110 1,1001100 1,0011000 1,1110011 1,1111001 机 器 数
– 26 – 52 – 104 – 13 –7
对应的真值 – 26 – 52 – 104 – 13 –6
反码
移位操作 移位前 左移一位
∴A+B= 0.0110 例 19 设 A = –9,B = –5 验证 求 [A+B]补 解: [A]补 = 1 , 0 1 1 1 – 1001 + [B]补 = 1 , 1 0 1 1 + – 0101 [A]补 + [B]补 = 1 1 , 0 0 1 0 = [A + B]补 – 1110 ∴ A + B = – 1110
第三讲
定点运算(一)
本讲主要内容



移位运算 补码加法 补码减法 益处概念与检测方法 基本的二进制加法/减法器
一、移位运算
1. 移位的意义
15 . m = 1500. cm
小数点右移 2 位
机器用语 左移 右移 15 相对于小数点 左移 2 位 ( 小数点不动 ) 绝对值扩大 绝对值缩小
示形式及对应的真值,并分析结果的正确性。
解: 原码 A = – 26 = – 11010
移位操作
移位前 左移一位 左移两位 机 器 数
对应的真值
– 26 – 52 – 104 – 13 –6
右移一位
右移两位
1,0011010 1,0110100 1,1101000 1,0001101 1,0000110
从上面例中看到: 当最高有效位有进位而符号位无进位时,产生上溢; 当最高有效位无进位而符号位有进位时,产生下溢。 (简单地说是正数相加为负数或负数相加为正数则产 生溢出)
故溢出逻辑表达式为:
V=Cf⊕Co
其中Cf为符号位产生的进位,Co为最高有效位产生 的进位。此逻辑表达式也可用异或门实现。
判断电路
连同符号位一起相加,符号位产生的进位自然丢掉
结论: 至此证明了在模2意义下,任意两数的 补码之和等于该两数之和的补码。
其结论也适用于定点整数。
补码加法的特点: (1)符号位要作为数的一部分一起参加 运算; (2)在模2的意义下相加,即大于2的进 位要丢掉。
3、补码减法运算
公式: [x-y]补= [x]补+[-y]补 连同符号位一起相加,符号位产生的进位自然丢掉
V
0
A
n
GA
GS
溢出 判断 0
加法器(n+1)
求补控制 逻 辑
X
n
A、X 均 n+1 位 用减法标记 GS 控制求补逻辑
最高符号位 代表其 真正的符号
举例 例 x=+01100,y=+01000 求 x+y
例 x=-1100,y=-1000 求 x+y
(3) 利用进位值的判别法
[x]补 0 0. 1 1 0 0 +[y]补 0 0. 1 0 0 0 0 1. 1 0 0 0 [x]补 1 1.0 1 0 0 +[y]补 1 1.1 0 0 0 1 0.1 1 0 0
2、补码加法运算
(3)x<0,y>0,则x+y>0或 x+y<0 这种情况和第2种情况一样,把x和y的位置对调即得 证。 (4)x<0,y<0,则x+y<0 相加两数都是负数,则其和也一定是负数。 ∵[x]补=2+x, [y]补=2+y ∴[x]补+[y]补=2+x+2+y=2+(2+x+y) 上式右边分为”2”和(2+x+y)两部分.既然(x+y) 是负数,而其绝对值又小于1,那么(2+x+y)就一定 是小于2而大于1的数,进位”2”必丢失.又因(x+ y)<0, 所以 [x]补+[y]补=2+(x+y)=[x+y]补
左移两位 右移一位
右移两位
1,1100101 1,1001011 1,0010111 1,1110010 1,1111001
3. 算术移位的硬件实现
0
0
0
1
0
(a)真值为正 (b)负数的原码 (c)负数的补码 (d)负数的反码
丢1 丢1 出错 影响精度 出错 影响精度 正确 影响精度 正确 正确
4. 算术移位和逻辑移位的区别
算术移位 有符号数的移位
逻辑移位
逻辑左移
来自百度文库
无符号数的移位
低位添 0,高位移丢
0
0 10110010 01011001 11011001(补码)
逻辑右移
例如
逻辑左移 算术左移 Cy
高位添 0,低位移丢
01010011 10100110 00100110
逻辑右移 算术右移 0
高位 1 移丢
01010011
单符号位法的硬件实现 Cf C0 0 0 正确(正数) 0 1 上溢 1 0 下溢 1 1 正确(负数) V=Cf ⊕ C0 其中Cf为符号位产生的进位, C0为最高有效位产生 V=1 有溢出 V=0 无溢出
(2) 两位符号位判溢出
[x]补' = x 4+x 1 >x ≥ 0 0 >x ≥ –1(mod 4)
[x]补' + [y]补' = [ x + y ]补' (mod 4) [x –y]补' = [x]补' + [– y]补' (mod 4) 结果的双符号位 相同 结果的双符号位 不同 未溢出 溢出 00. ××××× 00, 11. ××××× 11, 10. 10, ××××× 01. 01, ×××××
举例
例 18 设 A = 0.1011,B = –0.0101 求 [A + B]补 验证 解: [A]补 = 0 . 1 0 1 1 0.1011 + [B]补 = 1 . 1 0 1 1 – 0.0101 [A]补 + [B]补 = 1 0 . 0 1 1 0 = [A + B]补 0.0110
例 20
设机器数字长为 8 位(含 1 位符号位) 且 A = 15, B = 24,用补码求 A – B 解: A = 15 = 0001111 B = 24 = 0011000 [A]补 = 0, 0001111 [B]补 = 0, 0011000 + [– B]补 = 1, 1101000 [A]补 + [– B]补 = 1, 1110111 = [A – B]补 ∴ A – B = – 1001 = –9 9 11 练习 1 设 x = 16 y = 16 ,用补码求 x+y – 12 错 x + y = – 0.1100 = 16 练习 2 设机器数字长为 8 位(含 1 位符号位) 且 A = – 97,B = +41,用补码求 A – B A – B = + 1110110 = + 118 错
在计算机中,移位与加减配合,能够实现乘除运算
2. 算术移位规则
符号位不变

正数

添补代码
0 0 左移 添 0 右移 添 1 1
原码、补码、反码 原 码 码 码
负数
补 反
例16
设机器数字长为 8 位(含1位符号位),写出 A = +26时,三种机器数左、右移一位和两位后的表 示形式及对应的真值,并分析结果的正确性。 A = +26 = +11010 解: 则 [A]原 = [A]补 = [A]反 = 0,0011010
相关文档
最新文档