質問
2進数に対して次のことをどのように行うかについて、誰かが何らかの洞察を持っているかもしれないかどうか興味があります:
変換
01+0 -> 10+1 (+ as in regular expressions, one or more)
01 -> 10
10 -> 01
そう、
10101000010100011100
01010100101010100010
そしてこれが単純な反転ではないことを明確にするために:
000000100000000000
000001010000000000
正規表現を考えていましたが、2進数で作業しているので、そのままにしておきたいです。 ビットをいじるハッキングページでも、洞察は得られませんでした。これには明らかにセルオートマトンの本質があります。だから、誰もこれを世話することができるいくつかのビット操作を持っていますか? (コードは不要です。その方法は知っています)。
解決
xが変数であるとします。その後、あなたは次のようになります:
unsigned myBitOperation(unsigned x)
{
return ((x<<1) | (x>>1)) & (~x);
}
他のヒント
C / C ++のTwidleは〜
所属していません StackOverflow