Javaで「^ =」演算子の目的は何ですか?

トリニティ:

私は面接のためにleetcodeに勉強していました。配列内の不対欠番を見つけることについて質問がありました。私はHashSetのを使用して、それを解決しました。しかし、私はmine.Myの質問よりも効率的なソリューション以下で見たものの論理XORそのa ^= nums[i]手段?

int a = 0;
for (int i = 0; i < nums.length; i++) {
    a ^= nums[i];
}
return a;
ジョープEggen:

あなたは今、すべての答えによって、精通している^=XOR-と-なり演算子です。

同様に、X ^ X == 0かつx ^ 0 == X回発生して重複を削除し、結果は唯一の1回の発生となり、累積XORを行います。

3 ^ 5 ^ 3 ^ 7 ^ 5 = (3 ^ 3) ^ (5 ^ 5) ^ 7 = 0 ^ 0 ^ 7 = 7
3   6   5   2   7  <--- stepwise accumulated: 3=1+2, 5=1+4, 7=1+2+4

XORは興味深い可換連想機能である「ビットが違う」、それが緩んで情報をしないよう

z = x ^ y   =>   y = z ^ x

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=311892&siteId=1