[Java]按位異或運算符一點小記
[ 2007-4-18 21:45:00 | By: 卡拉阿風 ]
按位異或運算符
兩個操作數中,如果兩個相應位相同,則結果為0,否則為1
即:
0^0=0, 1^0=1, 0^1=1, 1^1=0
例如:
00101010^00010111=00111101
1)如果需使用一個整數的某些特定的位翻轉,可使用另一個
相應位為1的操作數與原來的整數進行按位異或操作實現。
下面的例子對整數變量 ii的第四位翻轉
int revertFouth=ii^8;
其余位則沒有變化
2)通過按位異或運算可以實現兩個值的交換。而不使用臨
時變量。例如交換兩個整數a,b的值可通過下列語句實現:
int a=15,b=24;
//a的最右邊8位為00001111,b的最右邊8位為00011000
//a和b其余位為0,下同
a=a^b; //a的最右邊8位為00010111,a=23
b=b^a; //b的最右邊8位為00001111,b=15
a=a^b; //a的最右邊8位為00011000,a=24
*位邏輯運算表達式返回兩個操作數中數據長度較長的數據
類型
其中較小的左側將被填滿,若為整數,則填滿0,
若為負數,則左側填滿1