java中平方运算符,java中的“”、“|”和“^”、“~”运算符
今天在項目中看到一個兩個變量互換值的寫法,感覺很奇怪,代碼是這樣的:
int a = 3;
int b = 2;
a ^= b;
b ^= a;
a ^= b;
于是到網上查閱了相關資料,并寫了自己的測試代碼,同時對“&”,"|","^"運算符做了一些總結:
這幾個運算符都涉及到二進制間的邏輯運算,為了便于理解,在二進制里,我們可以把1當做邏輯true,把0當做邏輯false。
測試代碼如下:
package test;
public class Test {
public static void main(String[] args) {
int a = 3;
int b = 2;
test1(a, b);
test2(a, b);
test3(a, b);
test4(a);
}
public static void test1(int a, int b) {
System.out.println("a & b = " + (a & b));
}
public static void test2(int a, int b) {
System.out.println("a | b = " + (a | b));
}
public static void test3(int a, int b) {
System.out.println("a ^ b = " + (a ^ b));
}
public static void test4(int a){
System.out.println("~a = " + (~a));
}
}
1、“&”按位與運算符:
運算規則:參與運算的數字,低位對齊,高位不足的補零,對應的二進制位都為1,則運算結果為1,否則為0,因為任何數與0都得0。
例子中的計算過程:
3的二進制形式為0000 0000 0000 0000 0000 0000 0000 0011
2的二進制形式為0000 0000 0000 0000 0000 0000 0000 0010
按位進行與運算,結果為0000 0000 0000 0000 0000 0000 0000 0010
這個數字轉換為十進制就是數字2.
2、“|”按位或運算符:
運算規則:參與運算的數字,低位對齊,高位不足的補零,對應的二進制位有一個為1則為1,否則為0,1和任何數或運算都是1。
例子中的計算過程:
3的二進制形式為0000 0000 0000 0000 0000 0000 0000 0011
2的二進制形式為0000 0000 0000 0000 0000 0000 0000 0010
按位進行或運算,結果為0000 0000 0000 0000 0000 0000 0000 0011
這個數字轉換為十進制就是數字3.
3、“^”按位異或運算符:
運算規則:參與運算的數字,低位對齊,高位不足的補零,對應的二進制位相同為零,不相同為1。
例子中的計算過程:3的二進制形式為0000 0000 0000 0000 0000 0000 0000 0011
2的二進制形式為0000 0000 0000 0000 0000 0000 0000 0010
按位進行或運算,結果為0000 0000 0000 0000 0000 0000 0000 0001
這個數字轉換為十進制就是數字1.
4、“~”按位非運算:
按位非也叫做補,其實就是對二進制 先取反,再取反+1并添加上符號,就可以得到結果。
運算規則:只操作一個數字,將該數字中為1的位變成0,為0的位變成1。
適用場合:反轉數字的內容
例子中的計算過程:
3的二進制形式為0000 0000 0000 0000 0000 0000 0000 0011????? 取反后:1111 1111 1111 1111 1111 1111 1111 1100
由于取反后得到的是一個負數的存貯形式,而負數時以補碼的形式存貯,所以補碼取反加1,轉為十進制,再添加上符號就得到十進制形式的值。
即:
取反加1后的結果:0000 0000 0000 0000 0000 0000 0000 0011 + 1 =? 0000 0000 0000 0000 0000 0000 0000 0100
轉為成十進制并添加上符號,即最后的結果為:-4
所以,例子程序中最后的執行結果為:
a & b = 2
a | b = 3
a ^ b = 1
~a = -4
總結
以上是生活随笔為你收集整理的java中平方运算符,java中的“”、“|”和“^”、“~”运算符的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 英语语法第五节(定状同从句)
- 下一篇: 我们为什么要叫“鲜枣课堂”?