1.$s0=0x7000 0000 $s1=0x0fff ffff
2.$s0=0x4000 0000 $s1=0x4000 0000
那么,add $t0,$s0,$s1-->对于1无溢出,对于2溢出
sub $t0,$s0,$s1-->对于1无溢出
解释:
以0001-0001为例:{
1)存储的值均看成最高位0为符号位,表示4个正数;
2)正数-正数=正数+正数补码;//这一步当然是人工判断,如果是正数-负数,肯定是不能把负数搞成反码的,0001-0001=0001+1111=0000正确
正数补码就是全部取反加一,不用管符号位是0,什么“符号位不要变“之类的;//此处可以查看计算机判断溢出的原理? - 知乎
文章中,
[最大正] + [最小负] 0 1 1 0 N N N
这一栏,实际上里面的最小负1000 0000就是对0111 1111取补码的结果 ,文章指出,凡是发生溢出操作,“最高有效位进位”和“符号位进位”必然是一个是Y另一个是N,凡是不发生溢出的操作,必然是两个全Y或者两个全N,
3)对于1减法运算,也就是7000 0000+f000 0001看高4位:0111+1111,发现,绿色部分都有进位,没有溢出;
4)对于2加法运算,看高4位,1000+1000,绿色部分一个有进位,一个没有,故溢出,判断完毕!
}
总结:
举例子,找规律是有效的学习方法!!!!!!!!!!!!!!!!!!!!!