6

正直、ビット操作は苦手です。
私が興味を持っているのはXOR操作です。まあ、それがビットごとに何をするか、それが暗号化で使用され、一時変数なしでスワッピングを行うことができることは知っていますが、XORプロパティが適合するアルゴリズムに特定のアプローチがあるかどうかに興味がありました.
つまり、アルゴリズムの実用的なアプリケーションに興味がありXORます (たとえば、重複の中から一意の要素を見つけるために使用できます)。XORの使用が進むべき道であることがわかる問題のパターン (または問題の定式化) はありますか?
(二分探索を使うパターンがあるのと同じように?)XORコアアルゴリズムに関連するアルゴリズムでは>>、2 で割る代わりに使用できるように、単純に数学演算を高速化するために使用するだけではありません。

任意の入力を歓迎します

4

1 に答える 1

9

私の頭に浮かんだいくつかの例:

トグル ビット:

int i = 123;
i ^= (1 << 4); // toggle bit 5

ある種のランダム性:

int i = 123;
for (int k = 0; k < 100; k++)
{
   i = i ^ (i << 1) + i;
   System.out.println(i);
}

「弱い暗号化」:

int b = 235321;
int key = 24552;
int encrypted = b ^ key;
int decrypted = encrypted ^ key; // equals 235321
于 2012-04-23T19:41:55.533 に答える