異或 運算的應用

2021-07-22 05:50:51 字數 811 閱讀 5172

1.異或運算

關於異或,有兩種計算。一是邏輯異或,一是按位異或。所謂邏輯異或就是運算數是true或者false。比如p1=true,p2=true,p1^p2。

按位異或則是將變數轉化為二進位制,每一位分別異或。相同為0,不同為1。

按位運算如&、|、^優先順序位於關係運算子之後,邏輯運算子之前。

好像不經常強調邏輯異或和按位異或,因為兩者就是乙個運算子表示。如邏輯&&和按位&,邏輯||按位|我們很容易分清。但是兩者也沒有本質的區別,只是兩種分類而已。

2.異或的應用

例一:不使用其他變數實現a、b值的交換

下面三句即可解決:

a=a^b;    //此時a=a^b

b=a^b;    //此時b=a^b^b=a

a=a^b;    //此時a=a^b^a=b

這主要利用了異或的特性,兩個相同的數異或為0,不同的數按位異或肯定不為0。這裡的意思是不同的數按位異或肯定在某位異或時結果為1。如果結果中某位為1,則二進位制轉化為十進位制肯定不為0。

由此,引出例二:

陣列中的數除了有兩個數出現一次,其他數都成對出現。怎樣最快找到這兩個只出現一次的數字呢?

其他數成對出現是個契機,想到異或便是法寶。

我們將陣列的元素從頭到尾異或,相同的數在異或的過程中必然抵消為0,最終的異或結果即為兩個不同的數異或的結果。異或結果不為0,某位為1。說明這兩個不同的數在異或結果為1的這位上不同。這樣找到結果中為1的位,根據這位為1就能將陣列中兩個唯一只有乙個數字分開異或,最終的結果就可以得到這兩個唯一的數字了。

3.異或運算的更多應用

比如格雷碼、奇偶分頻等更多應用請深入了解。

異或運算的應用

異或是一種基於二進位制的位運算,用符號xor或者 表示,其運算法則是對運算子兩側數的每乙個二進位制位,同值取0,異值取1。它與布林運算的區別在於,當運算子兩側均為1時,布林運算的結果為1,異或運算的結果為0。交換律 a b b a 結合律 a b c a b c a b c d a b c 可以推出...

異或運算的應用

異或的運用 unique you 2018 03 22 13 31 36 1654 收藏 16 展開異或是一種基於二進位制的位運算,用符號xor或者 表示,其運算法則是對運算子兩側數的每乙個二進位制位,同值取0,異值取1。它與布林運算的區別在於,當運算子兩側均為1時,布林運算的結果為1,異或運算的結...

異或運算的應用

題目 1.將乙個數在二進位制狀態提取最右側的1後這個數為多少 2.提取乙個數轉為二進位制有多少個1 public class intgetrightnumber 怎麼把乙個int型別的數,提取出最右側的1後這個數為多少 static intgetnumber int flag 怎麼提取乙個數轉為二進...