Я работаю над функцией, которая по существу будет видеть, какое из двух целых чисел больше. Передаваемые параметры представляют собой 2
32-битные целые числа. Хитрость заключается в том, что разрешены только операторы! ~ | & << >> ^
(без приведения, другие типы данных, кроме signed int, *, /, -и т. д. ).
Пока что моя идея состоит в том, чтобы ^
объединить два двоичных файла, чтобы увидеть все позиции 1
значений, которые они не разделяют. Что я хочу сделать, так это взять это значение и изолировать 1
самое левое. Затем посмотрите, в каком из них есть это значение. Тогда это значение будет больше. (Скажем, мы используем 8-битные целые вместо 32-бит). Если два переданных значения были 01011011
и 01101001
Я использовал ^
на них, чтобы получить 00100010
. Затем я хочу сделать это 00100000
другими словами 01xxxxxx -> 01000000
Затем &
это с первым номером !!
результат и вернуть его. Если это 1
, то первый #
больше.
Любые мысли о том, как 01xxxxxx -> 01000000
или что-нибудь еще, чтобы помочь?
Забыл отметить:нет ifs, while, fors и т. д.