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