java亦或(^)
在java程序里面的異或用法:
相同輸出0,不同輸出1,例如:
System.out.println(1^1); 輸出0
System.out.println(1^2);輸出3,因為最后2個低位都不一樣,所有輸出3
異域的概念是相同為0不同為1.如果兩個數值異或后的值相同,異或前可能不同。
比如二進制:0010^0001=0011 而0000^0011=0011。 異或要慎用。
一道有意思的題目:很多成對出現數字保存在磁盤文件中,注意成對的數字不一定是相鄰的,如2, 3, 4, 3, 4, 2……,由于意外有一個數字消失了,如何盡快的找到是哪個數字消失了?
由于有一個數字消失了,那必定有一個數只出現一次而且其它數字都出現了偶數次。用搜索來做就沒必要了,利用異或運算的兩個特性——1.自己與自己異或結果為0,2.異或滿足
交換律。
public static int findLost(int a[]){
int result=0;
for(int i=0;i<a.length;i++) {
result^=a[i];
}
return result;
}
順序打亂也沒有關系。
實現兩個數的交換(不添加變量的情況下):
public static void main(String[] args){
int a=3;
int b=5;
a=a^b;
b=b^a;
a=b^a;
System.out.println(a+""+b);
}
}
總結
- 上一篇: CF思维联系–CodeForces -
- 下一篇: 奔驰车熄火十分钟后自燃 车主:未进行任何