Мне нравится играть в гольф dc, но я иногда расстраиваюсь, потому что dcу меня нет побитовых операций.
Вызов
Обеспечить четыре названные функции , которые реализуют эквивалент операций с поразрядными &, |, ~и^ (побитовое AND, OR, NOT и XOR). Каждая функция принимает два операнда ( ~занимает только один), которые представляют собой как минимум 32-разрядные целые числа без знака. Каждая функция будет возвращать целое число без знака той же битовой ширины, что и операнды.
ограничение
Вы можете использовать только те операции, которые поддерживаются dc. Эти:
+-*/Арифметическое сложение, вычитание, умножение и деление~по модулю (или divmod, если ваш язык поддерживает это)^экспоненцирование|модульное возведение в степеньvквадратный корень>>===!=<=<стандартные операторы равенства / неравенства>><<операторы сдвига битов.dcне имеет их, но так как они тривиально реализуются с точки зрения деления / умножения на степени 2, тогда я позволю это.
Управляющие структуры в dc могут быть неуклюже построены с использованием (рекурсивных) макросов и (в) операций равенства. Вы можете использовать любые встроенные управляющие структуры вашего языка.
Вы также можете использовать логические операторы && || ! , даже если они не доступны напрямую в dc.
Вы не должны использовать операторы побитового & , |, ~и ^или любые функции , которые реализуют их тривиальными.
Кроме того, вы не должны использовать встроенные операторы или функции базового преобразования строк.
Также рассмотрите возможность предоставления тестовой программы или фрагмента онлайн-компилятора (не включенного в счет по гольфу), чтобы подтвердить свой ответ.