符号位也要参加运算
减法:那就是进行变补运算 然后进行加法运算
溢出判断:
溢出情况发生在什么时候呢? 符号位相等的时候才会溢出 两个正数相加或者两个负数相加
硬件判断逻辑一:
Sa Sb Sf 表示的关系: 数A + 数B 即表示 Sa Sb 结果符号位Sf 符号位进位Cf 尾数最高位进位 C
也就是 两个正数 或两个负数 相加之后符号位变化 那么 就表示溢出
硬件判断逻辑二:
数据高位进位,符号位进位未进位,溢出。
数据位高位未进位,符号位进位,溢出。
数据位高位进位,符号位进位,不溢出。
数据位高位未进位,符号位未进位,不溢出。
硬件判断逻辑三:双符号位
这便是用11,00分别作为负数,正数且未溢出的标识,10,01则分别是负数和正数的溢出。
补码的相加减
1、补码加减的基本公式
补码加法的基本公式为:
整数 [A]补+[B]补=[A+B]补 (mod 2n+1)
小数 [A]补+[B]补=[A+B]补 (mod 2)
对于减法:
因A-B=A+(-B),则[A-B]补=[A+(-B)]补,由补码加法基本公式可得:
整数 [A-B]补=[A]补+[-B]补 (mod 2n+1)
小数 [A-B]补=[A]补+[-B]补 (mod 2)
[X+Y]补= [X]补+[Y]补 [X-Y]补= [X]补+[-Y]补
原码的相加减
符号位单独处理 数值位加减
求和时和的符号取被加数或者被减数的符号(前面的数是被减数被加数)
如果数值位产生进位那么表示结果溢出
1 0011 + 1 1100 符号位为 1 1111
减 被减数+减数的补码
-3- -12 = 9 1 0011 - 1 1100 符号位单独计算 0011 - 1100 = 0011 + (1100)补= 0011 + 0100 = 0111
最高位无进位 得到数值为的补码 需要对结果求补 = 1001 =9 符号位与被减数相反 为+ == 9
最高位有进位 数值位正确 符号取被减数的符号 前面的符号
标准移码的相加减
两个数的移码的相加减 == 两个数相加减的补码
网友评论