Eu gosto de jogar golfe dc, mas às vezes fico frustrado porque dcnão tem operações bit a bit.
Desafio
Fornecer quatro funções nomeadas que implementam o equivalente das operações c bit a bit &, |, ~e ^(bit a bit AND, OR, NOT e XOR). Cada função aceita dois operandos ( ~usa apenas um) que são, pelo menos, números inteiros não assinados de 32 bits. Cada função retornará um número inteiro não assinado da mesma largura de bit que os operandos.
Restrição
Você só pode usar operações suportadas por dc. Esses são:
+-*/Adição, subtração, multiplicação e divisão aritmética~módulo (ou divmod, se o seu idioma suportar)^exponenciação|exponenciação modularvraiz quadrada>>===!=<=<operadores padrão de igualdade / desigualdade>><<operadores de troca de bits.dcnão os possui, mas, como eles são implementados trivialmente em termos de divisão / multiplicação por potências de 2, então permitirei.
Estruturas de controle no dcmeu ser desajeitadamente construídas usando macros (recursivas) e (in) operações de igualdade. Você pode usar qualquer estrutura de controle interna que seu idioma tiver.
Você também pode usar operadores lógicos && || ! , mesmo que eles não estejam diretamente disponíveis no dc.
Você não deve usar os operadores bit a bit & , |, ~e ^ou quaisquer funções que trivialmente implementá-las.
Além disso, você não deve usar operadores ou funções integradas de conversão de cadeia de caracteres.
Considere também fornecer um programa de teste ou um trecho do compilador on-line (não incluído na pontuação do golfe) para ajudar a verificar sua resposta.