如何判断整数运算溢出
首先我们看下 无符号整数的加减法
对于一个 位的无符号二进制整数
有
所以 时就溢出了 这体现在最高位的进位
再考虑下无符号整数的减法
对于 因为无符号整数没有负数的概念所以
时就溢出了
运算器减法运算是用加上补码实现的所以
而 刚好是
的补码
所以最高位没有产生进为时就溢出了
有符号整数的溢出
假设 是
位整数 他们符号为记作
地位记作
显然有
理论上
实际结果分类讨论
结果其实是
没有溢出
因为进位进到符号位上去了 实际结果是
溢出了
结果其实是
没有溢出
实际结果是
没有溢出
世界结果是
溢出了
世界结果是
没有溢出
所以就是 时会溢出 这可以用异或运算得到