Мне нужно создать метод на 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;
}
Благодарю вас!
sum
, и поэтому ваша проверка не очень четко определена. - person Joshua Green   schedule 14.04.2012-128
и127
?8-bit
конечно., твоя логика не подведет, я думаю..! любой способ справиться с этим? - person noufal   schedule 29.05.2013