異或運算操作詳解

2021-10-07 10:49:31 字數 1155 閱讀 8302

異或,是乙個數**算符,英文為exclusive or,縮寫為xor,應用於邏輯運算。異或的數學符號為「」,計算機符號為「 xor 」。其運算法則為:

a ⊕ b = (¬a ∧ b) ∨ (a ∧ ¬b)

如果a、b兩個值不相同,則異或結果為1。如果a、b兩個值相同,異或結果為0。

異或也叫半加運算,其運算法則相當於不帶進製的二進位制加法:二進位制下用1表示真,0表示假,則異或的運算法則為:0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0(同為0,異為1),這些法則與加法是相同的,只是不帶進製。

異或略稱為xor、eor、ex-or

程式中有三種演算子:xor、xor、⊕。

使用方法如下

z = x ⊕ y

z = x xor y

(1) 0^0=0,0^1=1 0異或任何數=任何數

(2) 1^0=1,1^1=0 1異或任何數-任何數取反

(3) 任何數異或自己=把自己置0

(1) 使某些特定的位翻轉

例如對數10100001的第2位和第3位翻轉,則可以將該數與00000110進行按位異或運算。

10100001^00000110 = 10100111

(2) 實現兩個值的交換,而不必使用臨時變數。

例如交換兩個整數a=10100001,b=00000110的值,可通過下列語句實現:

a = a^b;   //a=10100111

b = b^a;   //b=10100001

a = a^b;   //a=00000110

(3) 在組合語言中經常用於將變數置零:

xor a,a

(4) 快速判斷兩個值是否相等

舉例1: 判斷兩個整數a,b是否相等,則可通過下列語句實現:

return ((a ^ b) == 0)

舉例2: linux中最初的ipv6_addr_equal()函式的實現

參考部落格:

異或運算詳解

按位異或操作 規則 如果兩個運算物件的對應位置有且只有乙個為1,則計算結果中該位位1,否則為0。簡言之 兩個相同的數會變成0,反之是1。0 0 0 0 1 1 1 1 0 1 0 1使用異或的例子,如leetcode上有一道題目single number,題目描述如下 題目大意就是在給定陣列中找出哪...

異或運算 有趣的異或運算

異或運算可以看做是沒有進製的加法,按位異或運算,相同為0,不同為1。0 0 0 0 1 1 1 0 1 1 1 0 觀察運算結果我們發現,當與0做異或運算時,另一元值不變 而與1做異或運算時,另一元值值取反。根據以上異或運算的特徵,可以有以下用途,除方便直觀外,運算效能也更加優異。1 變數重置0 假...

(與運算) (或運算) (異或運算)

即 兩個運算元同為 1 的時候為1 0 0 0 1 0 1 0 1 1 1 1 1 即 兩個運算元中至少有乙個為 1 的時候為1 0 0 0 0 1 1 1 0 1 1 1 0 即 兩個運算元不同的時候為1 運算規則 1 0 0 1 即 對乙個二進位制數按位取反,即將0變1,1變0。將乙個運算物件的...