Побитовые операции, эквивалентные оператору «больше чем»

Я работаю над функцией, которая по существу будет видеть, какое из двух целых чисел больше. Передаваемые параметры представляют собой 232-битные целые числа. Хитрость заключается в том, что разрешены только операторы! ~ | & << >> ^(без приведения, другие типы данных, кроме signed int, *, /, -и т. д. ).

Пока что моя идея состоит в том, чтобы ^объединить два двоичных файла, чтобы увидеть все позиции 1значений, которые они не разделяют. Что я хочу сделать, так это взять это значение и изолировать 1самое левое. Затем посмотрите, в каком из них есть это значение. Тогда это значение будет больше. (Скажем, мы используем 8-битные целые вместо 32-бит). Если два переданных значения были 01011011и 01101001Я использовал ^на них, чтобы получить 00100010. Затем я хочу сделать это 00100000другими словами 01xxxxxx -> 01000000Затем &это с первым номером !!результат и вернуть его. Если это 1, то первый #больше.

Любые мысли о том, как 01xxxxxx -> 01000000или что-нибудь еще, чтобы помочь?

Забыл отметить:нет ifs, while, fors и т. д.

20
задан Shubham 26 August 2018 в 13:21
поделиться