原則とXORの応用

理論

論理XOR - ウィキペディア

命題のために(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はしようとしている011Aに変換すること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;
}

おすすめ

転載: www.cnblogs.com/yexuesong/p/12427425.html