побитовые операторы для поиска меньше, чем в с
Это домашнее задание, которое требует от меня, чтобы определить,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
.
Я изучал эту статьюВот.
Но меня немного смущает такой подход к проблеме. Я разработал сдвиг для достижениянемного размазывая но я не совсем понимаю, как вы будете использовать этот результат для сравнения значений меньше или больше чем. Я просто ищу небольшое руководство и ясность, а не решение, это не мое намерение.