我需要使用按位运算在 C 中创建一个方法,该方法检查 x + y 是否会溢出。我最多只能使用以下操作中的 20 个;!~ & ^ | + << >> 请记住,我必须同时测试负数和正数。
我已经尝试了好几次让它工作。我的逻辑合理吗?我要去:如果(x + y)小于x,那么它已经溢出。基于这个逻辑,我写了这个;
int addOK(int x, int y)
{
int sum = x + y;
int nx = ((~x) + 1);
int check = (sum + nx)>>31;
return !check;
}
谢谢!