Сравнение чисел Си

Стоит задача: вернуть 1, если x < y, а иначе 0. Использовать можно только битовые операции ( ! ~ & ^ | + << >> ), if использовать нельзя.

Программа не проходит все тесты, выдает неверный ответ. Помогите пожалуйста исправить.

int isLess(int x, int y)
{
    return ((x + ~y + ~1) >> 31) & 0x1;
}

Ответы (1 шт):

Автор решения: Harry

Вот такое монстрообразное родилось :)

(((x+~y+1)^((x^y)&((x+~y+1)^x)))>>31)&1;
→ Ссылка