1、2 2定点加法 减法运算 2 2 1补码加法2 2 2补码减法2 2 3溢出概念与检验方法2 2 4基本的二进制加法减法器 2 2 1补码加法 补码加法的公式是 x 补 y 补 补在模2n 1意义下 任意两数的补码之和等于该两数之和的补码 2 2 1补码加法 续1 0 0 则 0 相加两数都是正数 故其和也一定是正数 正数的补码和原码是一样的 可得 x 补 y 补 补 mod2n 1 分四种情况来证明 2 2 1补码加法 续2 0 0 则 0或 0时 故 x 补 y 补 补 mod2n 1 当x y 0时 2n 1 x y 2n 1 又因 x y 0 故 x 补 y 补 2n 1 补 mod2
2、 2 2 1补码加法 续3 0 则 0或 0 这种情况和第2种情况一样 把 和 的位置对调即得证 2 2 1补码加法 续4 0 0 则 0 相加两数都是负数 则其和也一定是负数 x 补 2n 1 y 补 2n 1 x 补 y 补 2n 1 2n 1 2n 1 2n 1 x 补 y 补 2n 1 补 mod2 在模2n 1意义下 任意两数的补码之和等于该两数之和的补码 这是补码加法的理论基础 其结论也适用于定点小数 2 2 1补码加法 续5 例11 1001 0101 求 解 例12 1011 0101 求 解 由以上两例看到 补码加法的特点 一是符号位要作为数的一部分一起参加运算二是要在模2n
3、 1的意义下相加 即超过模的进位要丢掉 例11之解 x 补 01001 y 补 00101 x 补01001 y 补00101 补01110所以 1110 返回 例12之解 x 补 01011 y 补 11011 x 补01011 y 补11011 补100110所以 00110 返回 2 2 1补码减法 补码减法的公式是 补 x 补 y 补 x 补 y 补 2 14 证明 Y 补 Y 补 mod2n 1 2 17 因为 X Y 补 X 补 Y 补 mod2n 1 所以 Y 补 X Y 补 X 补又因为 X Y 补 X Y 补 X 补 Y 补所以 Y 补 X Y 补 X 补则 Y 补 Y 补
4、X Y 补 X Y 补 X 补 X 补 X Y X Y 补 X 补 X 补 0所以 Y 补 Y 补 mod2n 1 从 y 补求 y 补的法则是 对 补包括符号位在内 按位求反且最末位加1 即可得到 补 写成运算表达式 则为 补 补 2 18 表示对 补作包括符号位在内的按位求反操作 表示最末位的1 2 2 2补码减法 续1 例13 已知 1 1110 2 1101 求 x1 补 x1 补 x2 补 x2 补 解 例14 1101 0110 求 解 例10之解 x1 补 10010 x1 补 x1 补 20 01101 0001 01110 x2 补 01101 x2 补 x2 补 20 10
5、010 00001 10011 返回 例11之解 x 补 01101 y 补 00110 y 补 11010 x 补01101 y 补11010 补100111所以 0111 返回 2 2 3溢出概念与检验方法 以定点小数为例 在定点小数机器中 数的表示范围为 1 在运算过程中如出现大于1的现象 称为 溢出 这在定点机中是不允许的 机器定点小数表示 如 两个正数相加 结果为负 即 大于机器所能表示的最大正数 称为上溢 而两个负数相加 结果为正 即 小于机器所能表示的最小负数 称为下溢 例15 1011 1001 求 解 补 01011 补 01001 补01011 补01001 补10100两
6、正数相加 结果为负 显然错误 运算中出现了 上溢 溢出概念与检测方法 例 01011 00010 求 解 补 01011 补 0 0010 补01011 补00010 补01101两正数相加 结果无溢出 溢出概念与检测方法 例16 1101 1011 求 解 补 10011 补 10101 补10011 补10101 补01000 两负数相加 结果为正 显然错误 运算中出现了 下溢 溢出概念与检测方法 又例 1101 0010 求 解 补 10011 补 11110 补10011 补11110 补10001 两负数相加 结果为负 无溢出 溢出概念与检测方法 产生 溢出 的原因 分析可知 当最高
7、有效数值位的运算进位与符号位的运算进位不一致时 将产生运算 溢出 进一步结论 当最高有效位产生进位而符号位无进位时 产生上溢 当最高有效位无进位而符号位有进位时 产生下溢 溢出概念与检测方法 溢出 检测方法 为了判断 溢出 是否发生 可采用两种检测的方法 第一种方法 采用双符号位法 称为 变形补码 或 模2n 2补码 可使模2n 1补码所能表示的数的范围扩大一倍 变形补码定义为 溢出概念与检测方法 用同余式表示 补 2n 2 下式也同样成立 补 补 补 计算时 1 两个符号位都看作数码一样参加运算2 两数进行以2n 2位模的加法 即最高符号位上产生的进位要丢掉 采用变形补码后 如果两个数相加后
8、 其结果的符号位出现 01 或 10 两种组合时 表示发生溢出 这是因为两个绝对值小于1的数相加 其结果不会大于或等于2 所以 最高符号位所表示的是结果的正确符号 溢出概念与检测方法 得到两数变形补码之和等于两数之和的变形补码 补 补 补 mod2n 2 例14 0 1100 0 1000 求 溢出概念与检测方法 解 补 00 1100 补 00 1000 补00 1100 补00 100001 0100两个符号位出现 01 表示已溢出 即结果大于 1 上溢 又例 0 1100 0 0001 求 溢出概念与检测方法 解 补 00 1100 补 00 0001 补00 1100 补00 0001
9、00 1101两个符号位 00 表示无溢出 例15 0 1100 0 1000 求 溢出概念与检测方法 解 补 11 0100 补 11 1000 补11 0100 补11 100010 1100两个符号位出现 10 表示已溢出 即结果小于 1 下溢 又例 0 0100 0 1000 求 溢出概念与检测方法 解 补 11 1100 补 11 1000 补11 1100 补11 100011 0100两个符号位出现 11 表示无溢出 溢出概念与检测方法 由此可以得出如下结论 1 当以模4补码运算 运算结果的二符号位相异时 表示溢出 相同时 表示未溢出 故溢出逻辑表达式为V Sf1 Sf2 其中Sf1和Sf2分别为最高符号位和第二符号位 此逻辑表达式可用异或门实现 2 模4补码相加的结果 不论溢出与否 最高符号位始终指示正确的符号 溢出概念与检测方法 第二种溢出检测方法 采用 单符号位法 从例1和例2中看到 1 当最高有效位产生进位而符号位无进位时 产生上溢 2 当最高有效位无进位而符号位有进位时 产生下溢 故 溢出逻辑表达式为 V Cr Co其中 Cf为符号位产生的进位 Co为最高有效位产生的进位 显然 此逻辑关系可用异或门方便地实现 在定点机中 当运算结果发生溢出时 机器通过逻辑电路自动检查出溢出故障 并进行中断处理