簡介

XOR 的中文是互斥或的意思,它是一種位元運算子,會單獨對每個位元進行運算,在程式語言中寫作 a ^ b。詳細介紹可參考:Wiki

真值表

XOR 簡單來說就是兩者相同為 0,不同為 1。

A B 輸出
0 0 0
0 1 1
1 0 1
1 1 0

特性

XOR 會有以下幾種特性:

  • A ^ 0 = A
    若 A 為 0,0 ^ 0 = 0,若 A 為 1,1 ^ 0 = 1。
  • A ^ A = 0
    若 A 為 0,0 ^ 0 = 0,若 A 為 1,1 ^ 1 = 0。
  • A ^ B = B ^ A
    若 A 為 0,B 為 0,0 ^ 0 = 0 ^ 0 = 0。
    若 A 為 0,B 為 1,0 ^ 1 = 1 ^ 0 = 1。
    若 A 為 1,B 為 0,1 ^ 0 = 0 ^ 1 = 1。

上面這些都是以位元為單位來運算的,但其實對於十進位的數字也是通用的,有興趣的可以自己把十進位的數字轉為二進位來做就會明白了。

實際應用

LeetCode - 136 就是一個經典的 XOR 題目,詳細解法可參考本篇文章:LeeCode - 136 解題紀錄