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).

Foi útil?

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
scroll top