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