如果我添加或减去两个短值,我如何判断是否需要标记进位条件
问问题
794 次
2 回答
3
您可以使用较大的类型进行加法或减法,例如int
,将其强制转换为 a short
,并测试强制转换是否更改了值。
int i = s1 + s2;
short s = (short)i;
if (i != s) { /* overflow */ }
于 2012-04-28T23:32:24.530 回答
0
在仅加减法的情况下,当两个操作数都为正并且结果为负时发生算术溢出,反之亦然。
class OverflowTest
{
public static void main (String[] args)
{
System.out.println(isOverflow((short)32767, (short)32767, '+'));
System.out.println(isOverflow((short)-32767, (short)-32767, '+'));
System.out.println(isOverflow((short)32767, (short)-32767, '+'));
}
private static boolean isOverflow(short a, short b, char op) {
short c = (op == '+') ? (short)(a+b) : (short)(a-b);
if((a > 0 && b > 0 && c < 0) || (a < 0 && b < 0 && c > 0))
return true;
return false;
}
}
于 2012-04-28T23:42:03.827 回答