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