运算方法及运算器
定点补码加、减法运算补码加法运算:补码加法时,不管两个数是正数还是负数,按补码的和等于和的补码进行运算。
即[x]补+[y]补=[x+y]补。
特点:1.符号位与数值部分可以按照相同的规则一起参加运算,符号位不用单独处理。2.补码减法运算可以转换成加法运算。3.补码加、减法运算是有“模”运算,即符号位的进位自然丢失。
补码减法运算:补码减法运算可以转换为加法运算即[x]补-[y]补=[x]补+[-y]补。
从补码减法公式中可以看出,减法运算可转换[-y]补与补码的加法运算,而求出[-y]补就可以通过[Y]补连同符号位在内一起“求反加1”得到。
例如:x=-0111000,y=-0010001
[x]补=11001000,[y]补=11101111,[-y]补=00010001
[x]补-[y]补=[x]补+[-y]补=11001000=00010001=11011001;
3.溢出判断方法
由于计算机的字长是固定的,因此计算机中数的表示范围是有限的。若两个符号数进行相加、减法运算的结果超过了给定的取值范围,就称为溢出。一般来说异号不会产生溢出,只有两个同号的数相加时才会产生溢出。判断溢出的两个方法,
进位检测法:用符号位的进位与最高数值位的进位的异或来检测,若异或结果为1,则溢出,若结果是0则没有溢出。变形补码检测方法:每个操作数在运算时都采用两个符号位,正数用00表示,负数用11表示,两个符号位与数值位一起参加运算。若运算结果的两个符号位的代码一致,表示没有溢出,若运算结果的两个符号位代码不一致,表示溢出。符号位代码位10表示运算结果表示负溢,01表示运算结果位正溢。定点乘法运算原码一位乘法的算法:符号位通过异或确定,数值部分通过被乘数和乘数的绝对值的n轮加法、移位完成根据当前乘数中参与运算的位确定ACC加什么。若当前运算位=1则acc+【x】原;若=0则acc+0.每轮加法后acc、mq的内容统一逻辑右移。
补码一位乘法:符号位、数值位都是由被乘数和乘数进行n轮加法、移位,最后多来一次加法,每次加法可能是+0、+x补码、-x补码,每次位移是补码的算数位移(符号为负,加1,符号为正加0),乘数的符号位参与运算