Pregunta

es curioso si alguien pudiera tener alguna idea de cómo haría lo siguiente para un número binario:

convertir

   01+0 -> 10+1 (+ as in regular expressions, one or more)
    01 -> 10  
    10 -> 01  

entonces,

10101000010100011100
01010100101010100010

y para aclarar que esto no es una simple inversión:

000000100000000000
000001010000000000

Estaba pensando en expresiones regulares, pero estoy trabajando con números binarios y quiero seguir así. La página trucos poco retorcidos tampoco me ha dado ninguna idea. Esto claramente tiene alguna esencia de autómatas celulares. Entonces, ¿alguien tiene algunas operaciones de bit que pueden hacerse cargo de esto? (No es necesario ningún código, sé cómo hacerlo).

¿Fue útil?

Solución

Digamos que x es tu variable. Entonces tendrías:

unsigned myBitOperation(unsigned x)
{
    return ((x<<1) | (x>>1)) & (~x);
}

Otros consejos

Twidle en C / C ++ es ~

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top