Bit giro para executar esta conversão
-
03-07-2019 - |
Pergunta
curioso, se alguém pode ter alguma introspecção em como eu iria fazer o seguinte para um número binário:
converso
01+0 -> 10+1 (+ as in regular expressions, one or more)
01 -> 10
10 -> 01
assim,
10101000010100011100
01010100101010100010
e esclarecer que esta não é uma simples inversão:
000000100000000000
000001010000000000
Eu estava pensando regex, mas eu estou trabalhando com números binários e quero continuar assim. A página hacks girando bit não me deu qualquer visão também. Isso claramente tem alguma essência de autômatos celulares. Então, alguém tem uma operação bit poucos que podem cuidar disso? (Nenhum código é necessário, eu sei como fazer isso).
Solução
Vamos dizer que x é a variável. Então você teria que:
unsigned myBitOperation(unsigned x)
{
return ((x<<1) | (x>>1)) & (~x);
}
Outras dicas
Twidle em C / C ++ é ~
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow