理論
命題のために(P、Q \)\ \ (P \)排他的OR (Q \)\は、一般的と呼ばれる(P \ XOR \ Q \ \ ) または(P \ Oplus Q \)は\。プログラミング言語では、頻繁に書き込みp ^ q
。
排他的OR \(\ mathbb {Z} _ {2} \) 加算器群、付加満足結合および可換。
アプリケーション
有する実施形態は、再帰関係値、二つの要素のBを交換します。
void swap(int *a, int *b)
{
*a = *a ^ *b;
*b = *a ^ *b;
*a = *a ^ *b;
}
例えば101
、bは011
得られた第一のXOR 110
別を表し、0は同じ表します
反転定数0によって特徴付けによって特徴付けられる「固有値」第二XOR、Bのすべてのプロセスを、結果として最初のを取って、Bはしようとしている011
Aに変換すること101
その後、BのXORになるための「特徴量」、あなたはBを得ることができます
例二,https://leetcode-cn.com/problems/missing-number/
与えられた(、0、1、2、\ cdots、n個\)\ で(N- \)\、シーケンス番号を見つける\(0 \ cdotsのn \)の順序で、その数には表示されません。
int missingNumber(vector<int> &nums)
{
int res = nums.size();
for (int i = 0; i != nums.size(); ++i)
{
res ^= nums[i];
res ^= i;
}
return res;
}