異或,是乙個數**算符,英文為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異或任何數=任何數(1) 使某些特定的位翻轉(2) 1^0=1,1^1=0 1異或任何數-任何數取反
(3) 任何數異或自己=把自己置0
例如對數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。將乙個運算物件的...