побитовые операторы для поиска меньше, чем в с

Это домашнее задание, которое требует от меня, чтобы определить,x < yЕсли это так, я должен вернуться1, используя только побитовые операторы( ! ~ & ^ | + << >> ), Мне разрешено использовать только константы0 - 0xFFи предположим, что 32-разрядное целое число. Никаких петель, литья и т. Д.

Что я понял, так это то, что, если вам нужно изучить только 4 бита, вы можете сделатьx - y определить, еслиx меньше чемy, Еслиx был8 а такжеy был9 результат будет1111 за-1.

int lessThan(int x, int y){
    int sub = x + (~y+1); 

Что меня смущает, так это то, как теперь сравнивать этот результат сx определить, что оно действительно меньшеy.

Я изучал эту статьюВот.

Но меня немного смущает такой подход к проблеме. Я разработал сдвиг для достижениянемного размазывая но я не совсем понимаю, как вы будете использовать этот результат для сравнения значений меньше или больше чем. Я просто ищу небольшое руководство и ясность, а не решение, это не мое намерение.

Ответы на вопрос(4)

Ваш ответ на вопрос