邏輯與,邏輯或,邏輯異或;按位與,按位或,按位異或
阿新 • • 發佈:2020-10-26
邏輯與:兩邊的表示式有一項為假,結果就為假。兩邊的表示式全為真,結果才為真。 邏輯或: 兩邊的表示式有一項為真,結果就為真。兩邊的表示式全為假,結果才為假。 邏輯異或:真假為真,真真為假,假假為假。 ============================================== 按位與:兩個二進位制對應的位都為1,結果為1,否則為0 按位或:兩個二進位制對應的位都為0,結果為1,否則為1 按位異或:兩個二進位制對應的位相同為0,相反為1
符號表達:
邏輯與 邏輯或 邏輯異或 按位與 按位或 按位異或 & | ^
說明:很多人不容易理解這些符號的說明,就很迷糊,這裡我用簡單的語言進行說明,看完相信你會有所收穫!
邏輯:帶有這兩個字的通常就是兩個boolean表示式的運算。比如:(3>5) & (1<2)
按位:帶有這兩個字的通常是十進位制數或者二進位制數的運算。比如:3 | 5
解釋說明:
這是我自己總結的,相信在日常的編碼中你能夠更深的理解這些程式碼的意思。
邏輯與:兩邊的表示式有一項為假,結果就為假。兩邊的表示式全為真,結果才為真。 邏輯或: 兩邊的表示式有一項為真,結果就為真。兩邊的表示式全為假,結果才為假。 邏輯異或:真假為真,真真為假,假假為假。 ============================================== 按位與:兩個二進位制對應位都為1時,結果為1,否則結果為都0 按位或:兩個二進位制對應位都為0時,結果為0,否則結果為都1 按位異或:兩個二進位制對應位相同時,結果為0,否則結果為1
程式碼演示:
一個數轉二進位制的方法,這裡就不再進行闡述。可以自行查閱文件進行學習。
我們先看邏輯操作這邊的程式碼:
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));