Java中的按位操作——Java程式設計思想筆記
歡迎轉載,轉載請務必註明出處:http://blog.csdn.net/alading2009/article/details/40450421
Java中的按位操作符有四個,分別是:&(按位與)、|(按位或)、^(按位異或)、~(按位非)。
1、先來看按位與(&)
public class Main {
public static void main(String[] args) {
//按位與,兩1得1,遇0得0
System.out.println(Integer.toBinaryString(13));
System.out.println(Integer.toBinaryString(11));
System.out.println(Integer.toBinaryString(13&11));
}
}
結果為:
1101
1011
1001
從結果可以清晰的看到,與的規則為:兩位相與,若有一位為0,則結果為0,否則為1。
2、然後是按位或(|)
<span style="font-size:18px;">public class Main {
public static void main(String[] args) {
//按位或,兩0得0,遇1得1
System.out.println(Integer.toBinaryString(13));
System.out.println(Integer.toBinaryString(11));
System.out.println(Integer.toBinaryString(13|11));
}
}</span>
結果為:
1101
1011
1111
這樣就得到了按位或的結果
3、接下來是按位異或
public class Main {
public static void main(String[] args) {
//按位異或:兩位不同得1,兩位相同得0
System.out.println(Integer.toBinaryString(13));
System.out.println(Integer.toBinaryString(11));
System.out.println("0"+Integer.toBinaryString(13^11));
}
}
結果為:
1101
1011
0110
不同得1,相同得0
按位異或有一個有意思的用法,它可以不用第三方變數,交換兩數的值,如下
public class Main {
public static void main(String[] args) {
//使用按位異或交換兩數的值
int temp1=10;
int temp2=114;
System.out.println("交換前:temp1:"+temp1);
System.out.println("交換前:temp2:"+temp2);
temp1^=temp2;
temp2^=temp1;
temp1^=temp2;
System.out.println("交換後:temp1:"+temp1);
System.out.println("交換後:temp2:"+temp2);
}
}
結果為:
交換前:temp1:10
交換前:temp2:114
交換後:temp1:114
交換後:temp2:10
這個是有依據的,這樣來看,
第一步:temp1^=temp2,即temp1=temp1^temp2
第二步:temp2=temp2^temp1=temp2^(temp1^temp2),異或滿足交換律,去括號後最後得到temp2=temp1
第三步:temp1=temp1^temp2=(temp1^temp2)^temp2=temp1^temp2^temp1=temp2
經過這三步,順利交換了兩變數的值。
這個方法告訴我們,可以在C++中這樣實現swap函式
void swap(int &a, int &b){
a^=b;
b^=a;
a^=b;
}
這裡使用了傳引用,當然你也可以用傳指標的方式實現4、最後是按位非(~)
public class Main {
public static void main(String[] args) {
//按位非:逐位取反
System.out.println("0000000000000000000000000000"+Integer.toBinaryString(13));
System.out.println(Integer.toBinaryString(~13));
}
}
結果為:
00000000000000000000000000001101
11111111111111111111111111110010
歡迎轉載,轉載請務必註明出處:http://blog.csdn.net/alading2009/article/details/40450421
相關文章
- 《java程式設計思想》筆記1Java程式設計筆記
- Java 程式設計思想筆記:Learn 10Java程式設計筆記
- 《Java程式設計思想》筆記08——持有物件Java程式設計筆記物件
- 《Java程式設計思想》讀書筆記一Java程式設計筆記
- 讀書筆記-Java程式設計思想-03筆記Java程式設計
- 《Java程式設計思想》筆記07——內部類Java程式設計筆記
- 《Java程式設計思想》筆記8.多型Java程式設計筆記多型
- Java程式設計思想讀書筆記一:併發Java程式設計筆記
- Java程式設計思想學習筆記1 - 內部類Java程式設計筆記
- java 程式設計思想的學習筆記 - 第一章Java程式設計筆記
- Java程式設計思想(2nd)學習筆記(7) (轉)Java程式設計筆記
- Java程式設計思想(2nd)學習筆記(6) (轉)Java程式設計筆記
- Java程式設計思想學習筆記4 - 序列化技術Java程式設計筆記
- Java程式設計思想(2nd)學習筆記(9)-2 (轉)Java程式設計筆記
- Java程式設計思想(2nd)學習筆記(8)-1 (轉)Java程式設計筆記
- Java程式設計思想(2nd)學習筆記(8)-2 (轉)Java程式設計筆記
- JAVA語言程式設計思想Java程式設計
- 重讀JAVA程式設計思想Java程式設計
- Go學習筆記:關於Java、Python、Go程式設計思想的不同Go筆記JavaPython程式設計
- java入門之初讀___java程式設計思想Java程式設計
- Java 基礎程式設計筆記Java程式設計筆記
- java程式設計思想之註解Java程式設計
- java筆記-two-java泛型程式設計(簡記)Java筆記泛型程式設計
- Java程式設計思想中關於閉包的一個例子Java程式設計
- JAVA 程式設計思想 第13章 字串Java程式設計字串
- JAVA設計模式筆記Java設計模式筆記
- Java中按位取反運算子Java
- java架構師筆記:Java中的轉換器設計模式Java架構筆記設計模式
- Java遊戲程式設計讀書筆記(轉)Java遊戲程式設計筆記
- java程式設計思想第一章Java程式設計
- java程式設計思想之併發(死鎖)Java程式設計
- Java程式設計思想之靜態技術Java程式設計
- 《Java8函數語言程式設計》讀書筆記---常用的流操作Java函數程式設計筆記
- C++程式設計思想重點筆記(上)C++程式設計筆記
- C++程式設計思想筆記之四 (轉)C++程式設計筆記
- C++程式設計思想筆記之一 (轉)C++程式設計筆記
- C++程式設計思想筆記之三 (轉)C++程式設計筆記
- C++程式設計思想筆記之六 (轉)C++程式設計筆記