XOR を使用した 2 つの変数のみを使用したスワップ

他の言語と異なり、C 言語と C++ 言語の XOR は xor ではなく "^" を使用し、入力方法は Shift+6 です。(他の言語では「^」は一般に力を意味します)
2 つの変数の値を交換する必要がある場合は、通常の交換用の中間変数の借用に加えて、次のような XOR を使用して 2 つの変数のみを交換することもできます。
1
2
3
a=a^b;
b=b^a;
a=a^b;
詳細な説明:
1
2
3
a1=a^b
b=a1^b
a=a1^b=a1^(a1^b)=a1^a1^b=b
集める:
1
a=a^b^(b=a);
これでaとbの交換は完了です。
要約すると、同じ変数が別の変数と XOR 演算され、その XOR 値はそれ自体と等しくなります。
使用例: 暗号化アルゴリズムの 1 つ以上のリンクで使用して、アルゴリズムをより複雑にし、解読を困難にし、より安全にすることができます。

おすすめ

転載: blog.csdn.net/zp1990412/article/details/39966011