符號表達:
邏輯與 邏輯或 邏輯異或 按位與 按位或 按位異或 按位非 & | ^ ~
說明:很多人不容易理解這些符號的說明,就很迷糊,這里我用簡單的語言進行說明,看完相信你會有所收獲!
邏輯:帶有這兩個字的通常就是兩個boolean表達式的運算。比如:(3>5) & (1<2)
按位:帶有這兩個字的通常是十進制數或者二進制數的運算。比如:3 | 5
解釋說明:
這是我自己總結的,相信在日常的編碼中你能夠更深的理解這些代碼的意思:
邏輯與:兩邊的表達式有一項為假,結果就為假。兩邊的表達式全為真,結果才為真。 邏輯或: 兩邊的表達式有一項為真,結果就為真。兩邊的表達式全為假,結果才為假。 邏輯異或:真假為真,真真為假,假假為假。 ============================================== 按位與:兩個二進制對應位都為1時,結果為1,否則結果為都0 按位或:兩個二進制對應位都為0時,結果為0,否則結果為都1 按位異或:兩個二進制對應位相同時,結果為0,否則結果為1 按位非:原碼位為0,運算后得1,原碼位為1,運算后得0
代碼演示:
一個數轉二進制的方法,這里就不再進行闡述。可以自行查閱文檔進行學習。
我們先看邏輯操作這邊的代碼:
int a = 5;//0000 0101 int b = 3;//0000 0011 System.out.println("邏輯與:" + ((a > b) & (b > 3))); System.out.println("邏輯或:" + ((b > 3) | (a > b))); System.out.println("邏輯異或:" + ((a > 3) ^ (b > 5))); System.out.println("邏輯異或:" + ((a > 3) ^ (b < 5))); System.out.println("邏輯異或:" + ((a < 3) ^ (b > 5))); ----------------------------------------------------------------------- 結果為: 邏輯與:false 邏輯或:true 邏輯異或:true 邏輯異或:false 邏輯異或:false
按位這邊的代碼:
int a = 5;//0000 0101 int b = 3;//0000 0011 System.out.println("按位與:" + (3 & 5));//0000 0001 System.out.println("按位或:" + (3 | 5));//0000 0111 System.out.println("按位異或:" + (3 ^ 5));//0000 110 ========================================= 結果為:自行驗算上邊的二進制轉為十進制的數 按位與:1 按位或:7 按位異或:6
拓展1:&= , |= , ^=
在有些地方我們有可能會見到這樣的符號:&= , |= , ^=
這樣的符號其實就是一個賦值類的操作。
我們來舉個例子:
int a = 5;//0000 0101 int b = 3;//0000 0011 a ^= b; System.out.println(a);//a = a^b
其實這個跟我們學過的+=是一個意思。
擴展2:java中用方法進行進制轉換
//十進制轉成十六進制: System.out.println(Integer.toHexString(10)); //十進制轉成八進制 System.out.println(Integer.toOctalString(10)); //十進制轉成二進制 System.out.println(Integer.toBinaryString(10)); //十六進制轉成十進制 System.out.println(Integer.valueOf("FFFF", 16).toString()); //八進制轉成十進制 System.out.println(Integer.valueOf("010", 8).toString()); //二進制轉十進制 System.out.println(Integer.valueOf("0101", 2).toString()); //將2、8、16進制直接轉為10進制 System.out.println(Integer.parseInt("1010",2)); System.out.println(Integer.parseInt("012",8)); System.out.println(Integer.parseInt("FFFF",16));