透過 MCP 連接 →

輸入計算

數學公式

廣告

結果

位元 XOR(A ^ B)
6
十進位
二進位 A 101
二進位 B 11
二進位 XOR 110
十六進位 XOR 0x6

什麼是位元 XOR 計算機?

位元 XOR(互斥或,exclusive OR)計算機會接收兩個整數,並逐位元(bit)進行運算。在每一個位元位置上,當兩個輸入位元「不同」時,輸出為 1;當兩者「相同」時,輸出為 0。這是程式設計、數位邏輯、密碼學與錯誤偵測中最基礎的運算之一。

如何使用

輸入第一個整數(A)與第二個整數(B),接著送出即可。計算機會回傳十進位的 XOR 結果,同時提供二進位與十六進位表示法,方便你逐位元驗證。正整數與負整數都可以使用。

公式說明

在大多數程式語言中,XOR 寫作 A ^ B;在數學符號中則寫作 $$\text{Result} = \text{A} \oplus \text{B}$$ 單一位元的真值表為:\(0\oplus0=0\)、\(0\oplus1=1\)、\(1\oplus0=1\)、\(1\oplus1=0\)。此運算會獨立套用到每一組對應的位元。一個實用的特性是:A ^ A = 0 以及 A ^ 0 = A,這也正是 XOR 常被用來交換變數值與切換旗標(flag)的原因。

XOR 真值表,顯示 0 XOR 0 = 0、0 XOR 1 = 1、1 XOR 0 = 1、1 XOR 1 = 0
僅當兩個輸入位元不同時,XOR 才輸出 1。

實例演算

假設 \(A = 12\)、\(B = 10\)。換成二進位,\(12 = 1100\)、\(10 = 1010\)。逐欄比較:\(1\oplus1=0\)、\(1\oplus0=1\)、\(0\oplus1=1\)、\(0\oplus0=0\),得到 \(0110 = 6\)。因此 $$12 \oplus 10 = 6$$

兩個二進位數上下排列,每個位元欄透過 XOR 組合產生結果列
XOR 對每個對齊的位元獨立運算。

位元運算比較

每個位元運算一次處理一個位元。對於每一對輸入位元 \(A\) 和 \(B\),運算產生一個單一輸出位元。下表顯示六個最常見運算的完整單一位元真理表。XOR(互斥或,記作 \(A \oplus B\))只有在兩個輸入位元不同時才輸出 1。

A B AND (A&B) OR (A|B) XOR (A^B) NAND ~(A&B) NOR ~(A|B) XNOR ~(A^B)
0 0 0 0 0 1 1 1
0 1 0 1 1 1 0 0
1 0 0 1 1 1 0 0
1 1 1 1 0 0 0 1

注意 XOR 是 XNOR 的精確補集,且 XOR 恰好在輸入不相同的兩行中等於 1。這種「差異偵測器」的特性使 XOR 適用於奇偶校驗、簡單加密和位元反轉。

常見輸入對的 XOR 運算

下表對幾個代表性的輸入對進行位元 XOR 運算,分別以十進制、二進制和十六進制顯示每個運算數和結果。XOR 按位執行:將兩個二進制數對齊,在位元不相同的地方輸出 1。

A B A(二進制) B(二進制) A ^ B(十進制) A ^ B(二進制) A ^ B(十六進制)
5 3 0101 0011 6 0110 0x6
255 15 11111111 00001111 240 11110000 0xF0
12 12 1100 1100 0 0000 0x0
7 0 0111 0000 7 0111 0x7
10 6 1010 0110 12 1100 0xC
-1 1 …11111111 …00000001 -2 …11111110 0x…FE

有兩個模式很突出。當運算數為 0 時,XOR 傳回另一個運算數不變(\(7 \oplus 0 = 7\))。當兩個運算數相同時,XOR 傳回 0(\(12 \oplus 12 = 0\))。負數範例使用二補數表示:\(-1\) 是全 1 位元,所以將其與任何值進行 XOR 會翻轉每個位元(等同於位元 NOT),得到 \(-1 \oplus 1 = -2\)。

常見問題

XOR 是什麼意思?就是互斥或(Exclusive OR)-只有在兩個輸入中「恰好只有一個」為真(1)時,結果才為真。

為什麼密碼學會用到 XOR?因為用金鑰對資料做 XOR 是可逆的:再用同一把金鑰做一次 XOR,就能還原出原始資料(\(A \oplus K \oplus K = A\))。

支援負數嗎?支援。負數採用二補數(two's-complement)表示法,因此負數的二進位顯示可能會包含許多位元。

最後更新: