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