Bit Twiddle diese Umwandlung durchzuführen
-
03-07-2019 - |
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).
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