1、異或簡介
異或(^)操作運算規則為相同的為0,不同的為1
2、異或操作進行數字交換
我們現在有兩個數a,b,我們可以通過異或操作對他們倆的數字進行交換
a = a ^ b
b = b ^ a
a = a ^ b
這樣,這兩個數字的值就進行了交換
我們舉個例子,比如a = 97和b = 33
97的二進位制為1100001
33的二進位制為100001
首先進行 a = a ^ b
1 1 0 0 0 0 1
0 1 0 0 0 0 1
1 0 0 0 0 0 0
我們得到 a = 1000000 既 64
我們在進行b = b ^ a
0 1 0 0 0 0 1
1 0 0 0 0 0 0
1 1 0 0 0 0 1
我們得到 b = 110001 既 97
再進行最後的a = a ^ b
1 0 0 0 0 0 0
1 1 0 0 0 0 1
0 1 0 0 0 0 1
得到了a = 1 0 0 0 0 1 既33
這樣,我們就為完成了兩個數的交換
3、異或操作進行數字篩選
因為異或的特性,對於相同的二進位制數為0,不同的為1
這樣,不難得出n ^ n ^ n … ^ n = 0,也就是說相同的數進行異或為0,不論有多少個
1 ^ 1 = 0
1 ^ 1 ^ 2 ^ 2 ^ 3 = 3
這一特性可以運用在leetcode的389題找不同上面
4、異或操作進行數字篩選
在二進位制中,所有的偶數末尾都是0,所有的奇數末尾都是1
如果乙個數和1進行異或,如果是偶數的話,他的大小會+1,如果為奇數的話大小會-1
異或在C C 程式設計中的應用
本文主要介紹c c 程式設計中兩個巧用異或解決問題的方法。一 巧用異或進行取反運算 假設安排乙個周健身計畫表,每天的可選專案包括 running,riding,swimming。現用乙個enum表示周一到週日,如下 enum day 上述enum用二進位製上的一位,表示這一天是否有安排。不同位可以疊...
java中 異或運算子的運用
的位運算子中有乙個叫異或的運算子,用符號 表示,其運算規則是 int i 15,j 2 system.out.println i j i j 執行結果是 i j 13.分析上面程式,i 15轉成二進位制是1111,j 2轉成二進位制是0010,根據異或的運算規則得到的是1101,轉成十進位制就是13...
Java中異或運算子 及其運用
異或運算 是以二進位制資料為基礎進行運算的。也就是說當 中使用到異或運算時,都會先將兩個條件進行轉換,轉換成二進位制資料後,再進行運算。異域中同位如果值相同 都是0或者都是1 則為0,不同 乙個是0,乙個是1 為1。在這裡我們舉個例子 int a 3 int b 8 int c a b c的值為a和...