java中 異或運算子的運用

2021-08-21 01:40:12 字數 1049 閱讀 5947

的位運算子中有乙個叫異或的運算子,用符號(^)表示,其運算規則是:

int i = 15, j = 2;

system.out.println("i ^ j = " + (i ^ j));}}

執行結果是:i ^ j = 13.

分析上面程式,i=15轉成二進位制是1111,j=2轉成二進位制是0010,根據異或的運算規則得到的是1101,轉成十進位制就是13.

利用這個規則我們可以靈活運用到某些演算法。

比如,假定有2k+1個數,其中有2k個相同,需要找出不相同的那個數,比如:2、3、4、4、3、5、6、6、5。我們利用異或運算子就可以這樣寫:

public class testxor;

int v = 0;

for (int i = 0;i < array.length;i++)

system.out.println("只出現一次的數是:" + v);}}

結果是:只出現一次的數是2.

我們就是巧用異或運算子的規則,得出乙個數和0異或還是自己,乙個數和自己異或是0的原理。也就是說在乙個整形陣列中,如果相同的數字是成對出現的(位置不一定相鄰),遍歷陣列,並且兩兩異或,結果一定為0.

如果出現過其中一對有缺失數字,即只出現了乙個,則遍歷異或結果為缺失的數字

。例三:當我們完成兩個變數進行交換時,我們經常建立乙個臨時變數來共同完成互換,但是臨時變數的建立增加了系統資源的消耗,我可以使用異或運算子「^」實現兩個變數的交換

public class main

}例四:我們可以通過位運算的異或運算子「^」把字串與乙個指定的值進行異或運算,從而改變字串中每個字元的值,進行加密和解密;

public class main

system.out.println(new string(array));

for(int i=0;iarray[i]=(char)(array[i]^20000);

}system.out.println(new string(array));}}

**解析:如果某個字元或數值x與乙個數值m進行異或運算得到y,則再用y與m進行異或運算就可以還原為x

Java中異或運算子 及其運用

異或運算 是以二進位制資料為基礎進行運算的。也就是說當 中使用到異或運算時,都會先將兩個條件進行轉換,轉換成二進位制資料後,再進行運算。異域中同位如果值相同 都是0或者都是1 則為0,不同 乙個是0,乙個是1 為1。在這裡我們舉個例子 int a 3 int b 8 int c a b c的值為a和...

Java的異或運算子

是異或運算子,異或的規則是轉換成二進位制比較,相同為0,不同為1.乙個數a與另乙個數b異或的結果等於a b,用結果 a b 異或a,就會得到b 上面的結果,我們用 來驗證。a a b b a b a a b 可以轉換成這樣。int c a b 01 10 11 得到結果c a b b c b 10 ...

異或運算子

表示當兩個數的二進位制表示,進行異或運算時,當前位的二進位制相同為0,不同為1.表示為 特點 0異或任何數,是任何數 1異或任何數,任何數取反 任何乙個數字異或自己都等於0 面試題 乙個整型陣列中除了兩個數字之外,其他的數字都出現了兩次。試找出這兩個只出現一次的數字。劍指offer 例如,陣列 中,...