天天看點

C++ 按位與運算符&、按位異或運算符^、按位或運算符|

1、 按位與運算符

參加運算的兩個資料,按二進制位進行“與”運算。

運算規則:0&0=0; 0&1=0; 1&0=0; 1&1=1;

即:兩位同時為“1”,結果才為“1”,否則為0;

另,負數按補碼形式參加按位與運算。

“與運算”的特殊用途:

(1)清零。如果想将一個單元清零,即使其全部二進制位為0,隻要與一個各位都為零的數值相與,結果為零。

(2)取一個數中指定位

方法:找一個數,對應X要取的位,該數的對應位為1,其餘位為零,此數與X進行“與運算”可以得到X中的指定位。

例:設X=10101110,

取X的低4位,用 X & 0000 1111 = 0000 1110 即可得到;

還可用來取X的2、4、6位。

2、按位異或運算符^

參與運算的兩個值,如果兩個相應位相同,則結果為0,否則為1。即:0^0=0, 1^0=1, 0^1=1, 1^1=0

例如:10100001^00010001=10110000

0^0=0,0^1=1 0異或任何數=任何數

1^0=1,1^1=0 1異或任何數-任何數取反

任何數異或自己=把自己置0

(1)按位異或可以用來使某些特定的位翻轉,如對數10100001的第2位和第3位翻轉,可以将數與00000110進行按位異或運算。

          10100001^00000110=10100111 //1010 0001 ^ 0x06 = 1010 0001 ^ 6

(2)通過按位異或運算,可以實作兩個值的交換,而不必使用臨時變量。例如交換兩個整數a,b的值,可通過下列語句實作:

a=10100001,b=00000110

a=a^b;   //a=10100111

b=b^a;   //b=10100001

a=a^b;   //a=00000110

(3)異或運算符的特點是:數a兩次異或同一個數b(a=a^b^b)仍然為原值a.

3、按位或運算符|

參加運算的兩個對象,按二進制位進行“或”運算。

運算規則:0|0=0; 0|1=1; 1|0=1; 1|1=1;

即 :參加運算的兩個對象隻要有一個為1,其值為1。

另,負數按補碼形式參加按位或運算。

“或運算”特殊作用:

(1)常用來對一個資料的某些位置1。

方法:找到一個數,對應X要置1的位,該數的對應位為1,其餘位為零。此數與X相或可使X中的某些位置1。

例:将X=10100000的低4位置1 ,用 X | 0000 1111 = 1010 1111即可得到。

繼續閱讀