Java中"與"、"或"、"非"、"異或"
& 按位"與"運算子
public class Demo { public static void main(String[] args) { // &運算子 int a = 16; //16轉換為二進位制為10000 int b = 17; //17轉換為二進位制為10001 // 兩個運算元都為1時才為1 // 10000 // & 10001 //-------------- // 10000 System.out.println(a&b); //輸出為16 } }
| 按位"或"運算子
public class Demo { public static void main(String[] args) { // |運算子 int a = 16; //16轉換為二進位制為10000 int b = 17; //17轉換為二進位制為10001 // 兩個運算元只要有一個1就為1 // 10000 // | 10001 //-------------- // 10001 System.out.println(a|b); //輸出為17 } }
~ "取反"運算子
public class Demo { public static void main(String[] args) { // ^運算子 int a = 8; int b = 9; //8轉換為二進位制為1000 //9轉換為二進位制為1001 // 異或規則相同為0不同為1 // 1000 // | 1001 //-------------- // 0001 System.out.println(a^b); //輸出為1 } }
假如有一個陣列中有兩個相同的內容只有一個是不一樣的,那麼如何找到這個不一樣的數。
可能我敘述的不太容易理解,假如我們有以下陣列。
int temp = {1,2,3,4,5,4,3,2,1};
可以看到陣列中的1、2、3、4都是有兩個,但是隻有5有一個,而我們要做的就是找到這個5。
如何用十分簡潔的程式碼就可以實現這個功能呢?
這裡使用了一個異或的特性。
public class Demo { public static void main(String[] args) { int[] temp = {1,2,5,2,1,4,4,15,5}; int a = 0; for(int i=0;i<temp.length;i++) { a = a ^ temp[i]; } System.out.println(a); } }
執行這段程式碼。
C:\Users\PiLiPaLa\Desktop\Code\Eight>java Demo 15
成功的將15輸出了。
其實原理就是異或,有兩個相同的數就會抵消變成0,然後只剩下單獨的那一個。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69983372/viewspace-2731107/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Java的位運算子詳解例項——與(&)、非(~)、或(|)、異或(^)Java
- java中與運算,或運算,異或運算,取反運算Java
- python中 “與,或,異或”與C語言的不同PythonC語言
- java與php區別或異同(整理、整合)JavaPHP
- 異或
- 位與,位或,位異或運算子的理解
- 異或門
- 異或與區間加題解
- 一分鐘搞懂邏輯運算子&(並且) , |(或者) , !(非) , ^(異或) , &&(短路與) , ||(短路或)之間的關係
- 最大異或對
- 異或雜湊
- 那些著名或非著名的iOS面試題(中)iOS面試題
- 非 A 或 B 等價於非 A 且非 B
- 遊戲異或加解密遊戲解密
- 異或線性基
- 位運算-異或(^)
- 那些著名或非著名的iOS面試題-中編iOS面試題
- java和php基礎部分相同或異同JavaPHP
- 異或運算 XOR 教程
- P4551 最長異或路徑(樹上字首異或01-trie)
- JavaScript ^ 按位異或運算子JavaScript
- iOS異或加密演算法iOS加密演算法
- 異或線性基小記
- 異或運算完成數的交換, a++與++a的區別
- python系列--計算異或和Python
- 子陣列異或和問題陣列
- 雙子串最大異或 題解
- 那些著名或非著名的iOS面試題(上)iOS面試題
- 那些著名或非著名的iOS面試題(下)iOS面試題
- 複習(二):KMP、Trie、最大異或對、KMP
- Storm的跟蹤演算法-異或ORM演算法
- P4551 最長異或路徑
- 深入理解按位異或運算子
- Java Collection或Map的同步Java
- 那些著名或非著名的iOS面試題-前編iOS面試題
- Java中實現複製檔案或資料夾Java
- 關於樹上路徑異或和的思考
- 子陣列的最大異或和問題陣列