Frage

neugierig, wenn jemand könnte einen Einblick in, wie ich die folgenden in eine Binärzahl tun würde:

convert

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

so,

10101000010100011100
01010100101010100010

und klarstellen, dass dies nicht eine einfache Umkehrung ist:

000000100000000000
000001010000000000

Ich dachte regex, aber ich arbeite mit binären Zahlen und will es auch bleiben. Die Bit Hacks Seite twiddling hat mir keine Einsicht entweder gegeben. Dies hat eindeutig eine Essenz von zellulären Automaten. So jemand ein paar Bit-Operationen, die sich darum kümmern kann? (Kein Code erforderlich ist, ich weiß, wie das zu tun).

War es hilfreich?

Lösung

Lassen Sie uns sagen x ist Ihre Variable. Dann müßten Sie:

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

Andere Tipps

Twidle in C / C ++ ist ~

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top