我不明白加法和减法之间的区别,我试图查找它但仍然没有答案。请用最简单的方式解释。
我知道何时添加超过了用于存储它的整数类型的最大大小。当发生整数溢出时,解释的值似乎已经“环绕”了最大值并从最小值重新开始,但是如何,有什么条件可以防止这种情况发生?
我不明白加法和减法之间的区别,我试图查找它但仍然没有答案。请用最简单的方式解释。
我知道何时添加超过了用于存储它的整数类型的最大大小。当发生整数溢出时,解释的值似乎已经“环绕”了最大值并从最小值重新开始,但是如何,有什么条件可以防止这种情况发生?
相关:http ://teaching.idallen.com/dat2343/10f/notes/040_overflow.txt 这是关于 x86 的进位(无符号)和溢出(有符号)标志。
对于 MIPS,请牢记这一点:add
将捕获 x86 设置 OF 的任何时间。
(a+b) < a
在 MIPS 中,您可以使用无符号比较从加法中获得进位。或者对于一个(a-b) > a
未签名的子。
我想您也可以在subu
使用带(a-b) > a
符号比较之后检测到带符号溢出。因此,如果您不想a-b
溢出,请选择您的输入,使未包装的结果介于 INT_MIN 和 INT_MAX 之间。就这些。