原码的加法运算:
正+正:绝对值作加法,结果为正
负+负:绝对值作加法,结果为负
正+负 / 负+正:绝对值大的减去绝对值小的,符号同绝对值大的数
减法则为加法的逆运算
显然太麻烦,故引出补码运算
补码的加减运算:
加法:
符号位一同参与运算,计算结果也为补码
负数补码转为原码的快速方法:补码中最右边的1及其右边同原码,最右边的1及其左边同反码
减法:
加负数的补码即可
溢出判断:
只有正数+正数才会上溢,正+正=负
只有负数+负数才会下溢,负+负=正
判断溢出の方法一:采用一位符号位
设加数的符号位为A,被加数的符号位为B,结果的符号位为S,则溢出表达式为:
若V=0,无溢出
若V=1,有溢出
判断溢出の方法二:采用一位符号位,根据符号位的进位判断溢出
=) | 符号位的进位C1 | 最高数值位的进位C2 |
上溢 | 0 | 1 |
下溢 | 1 | 0 |
(C1 = C2时无溢出)
判断溢出の方法三:采用双符号位,正数符号位00,负数符号位11
最高位的实际意义为本该得到的正确符号
最终结果为01,则上溢;最终结果为10,则下溢