異或運算(^)是以二進位制資料為基礎進行運算的。也就是說當**中使用到異或運算時,都會先將兩個條件進行轉換,轉換成二進位制資料後,再進行運算。異域中同位如果值相同(都是0或者都是1)則為0,不同(乙個是0,乙個是1)為1。
在這裡我們舉個例子:
int a=3;
int b=8;
int c=a^b; //c的值為a和b的異或,輸出值為11
具體運算過程如下:
1.a的二進位制值是:
0000 0011
2.b的二進位制值是:
0000 1000
3.異或運算後二進位制值是:
0000 1011 //結果是11
異或運算法則:
a ^ b = b ^ a
a ^ b ^ c = a ^ (b ^ c) = (a ^ b) ^ c
d = a ^ b ^ c 可以推出 a = d ^ b ^ c
a ^ b ^ a = b
了解了異或運算後回到那道演算法題目,給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次.找出那個只出現了一次的元素.在不知道使用異或運算時,頭都大了,現在我們可以這樣:
int nums= ;
for(int i = 1;i< nums.length;i++)
system.out.println(nums[0]);
上面的**中nums[0]的值就是此陣列中唯一出現的值,最後的結果我們只要通過異或運算的特點來得知,比如上面的陣列[2,2,3,4,4],異或運算是滿**換規則的,對於2^2^3^4^4
這樣的異或運算,我們換一下位置等價得到(2^2)^(4^4)^3
,通過兩個相同的數進行異或運算可以得到0,那最終就會是0^0^3
,最後會得到3. 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.乙個數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 例如,陣列 中,...