研究問題:
- &與&&,|與||區別
- 位異或^
- 左移<<、右移>>
要點:
- &與|無論如何都會判斷條件兩邊,&&與||在左條件不成立時就結束判斷
- 位異或:相同則0,相異則1.
- a<
截圖展示區:
-
1.
class OperatorDemo3{
public static void main(String[] args){
int a=10;
int b=20;
a=a^b;
b=a^b;//即a^b^b==a
a=a^b;//a^b^b=a^b^a==b
System.out.println("a:"+a+"\tb:"+b);
}
}
上圖:
2.
package com.java.WeiCalc;
/*
位運算符:
&,|,^,~
<<,>>,>>>
注意:
要做位運算,首先要把數據轉換爲二進制。
*/
/*&位與:有0則0
* |位或:有1則1
*^位異或:同則0,異則1
*~按位取反.
*/
class OperatorDemo2 {
public static void main(String[] args) {
//&,|,^,~
int a = 3;
int b = 4;
System.out.println(3 & 4);
System.out.println(3 | 4);
System.out.println(3 ^ 4);
System.out.println(~3);
}
}
/*
分析:因爲是位運算,所以我們必須先把數據換算成二進制。
3的二進制:11
00000000 00000000 00000000 00000011
4的二進制:100
00000000 00000000 00000000 00000100
&位與運算:有0則0。
00000000 00000000 00000000 00000011
&00000000 00000000 00000000 00000100
-----------------------------------
00000000 00000000 00000000 00000000
結果是:0
|位或運算:有1則1。
00000000 00000000 00000000 00000011
|00000000 00000000 00000000 00000100
-----------------------------------
00000000 00000000 00000000 00000111
結果是:7
^位異或運算:相同則0,不同則1。
00000000 00000000 00000000 00000011
&00000000 00000000 00000000 00000100
-----------------------------------
00000000 00000000 00000000 00000111
結果是:7
~按位取反運算符:0變1,1變0
00000000 00000000 00000000 00000011
~11111111 11111111 11111111 11111100 (補碼)
補碼:11111111 11111111 11111111 11111100
反碼:11111111 11111111 11111111 11111011
原碼:10000000 00000000 00000000 00000100
結果是:-4
*/
上圖: