Сравнение двух чисел x, y; если x> y, я возвращаю 1, иначе возвращает 0. Я пытаюсь сделать это, используя только побитовые операторы, такие как >> << ~! & | ^ +. </p>
Пока я получил это:
int greaterThan(int x,int y) {
return ((~(x-y))>>31);
}
Так что, если xy отрицательный, самый значимый бит будет равен 1. Поэтому я отрицаю его, чтобы получить 0 и сдвинуть его так, чтобы он возвращал 0. Если xy положительный, самый значимый бит будет 0. Отрицательный чтобы получить 1 и сдвинуть его, чтобы вернуть 1. Это не похоже на работу. Я делаю это неправильно или что-то упустил?