2

2進数に対して次のことを行う方法について、誰かが洞察を持っているかどうか興味があります:

変換

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

それで、

10101000010100011100
01010100101010100010

これが単純な反転ではないことを明確にするために:

000000100000000000
000001010000000000

私は正規表現を考えていましたが、2進数を扱っていて、そのままにしたいと思っています。少しいじっているハックのページでも、私には何の洞察も得られませんでした。これは明らかにセルオートマトンの本質を持っています。それで、誰かがこれを処理できるいくつかのビット操作を持っていますか? (コードは必要ありません。その方法は知っています)。

4

2 に答える 2

11

x が変数だとしましょう。次に、次のようになります。

unsigned myBitOperation(unsigned x)
{
    return ((x<<1) | (x>>1)) & (~x);
}
于 2008-10-01T15:36:14.977 に答える
-2

C/C++ の Twidle は ~

于 2008-10-01T15:27:56.337 に答える