Domanda

curioso di sapere se qualcuno potrebbe avere un'idea di come farei quanto segue a un numero binario:

converti

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

così,

10101000010100011100
01010100101010100010

e per chiarire che questa non è una semplice inversione:

000000100000000000
000001010000000000

Stavo pensando a regex, ma sto lavorando con numeri binari e voglio rimanere così. La pagina hack di twiddling sui bit non mi ha fornito alcuna informazione. Questo ha chiaramente qualche essenza di automi cellulari. Quindi, qualcuno ha un po 'di operazioni che possono occuparsene? (non è necessario alcun codice, so come farlo).

È stato utile?

Soluzione

Supponiamo che x sia la tua variabile. Quindi avresti:

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

Altri suggerimenti

Twidle in C / C ++ è ~

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top