1> 功能
* 只有對應的兩個二進制位為1時,結果位才為1,否則為0
* 舉例:10用二進制表示為1010, 7用二進制表示為0111。對兩個數值進行&運算
* 1010
0111
--------------------
0010
* 規律:二進制中,與1相&保持原位,與0相&就為0
2> 應用:使用&運算符,判斷一個整數變量的奇偶性
1 int main() 2 { 3 int a = 10; 4 a&1 ? printf("%d為奇數", a) : printf("%d為偶數", a); 5 return 0; 6 } 利用&判斷變量奇偶性1> 功能
* 只要對應的兩個二進制位中有一個為1,結果就為1,否則為0
2> 應用
* 10用二進制表示為1010, 7用二進制表示為0111。對兩個數值進行|運算
* 1010
0111
--------------------
1111
1> 功能
* 當對應的二進制位相異時,結果為1,否則為0
* 舉例:10用二進制表示為1010, 7用二進制表示為111。對兩個數值進行^運算
* 1010
0111
--------------------
1101
2> 應用: 使用位異或運算符,實現兩個變量值的互換
1 int main() 2 { 3 /*該種用法基於三個規律。 4 1.相同數值進行異或運算,結果為0。 5 2.任何數值與0異或運算,結果還是原來數值。 6 3.交換規律:a^b^c=a^c^b */ 7 int a = 10; 8 int b = 11; 9 a = a ^ b;//a = 10^11 10 b = a ^ b;//b=10^11^11=10 11 a = a ^ b;//a=10^11^10=11 12 printf("a=%d,b=%d", a, b); 13 } 交換數值
1> 功能
* 按位取反,就是對數值的每個二進制位進行取反操作,0取反變1,1取反變0
2> 應用
* 舉例:10用二進制表示為1010,對1010進行~操作
* 1010
--------------------
0101
5.左移<< 、右移>>
1> 功能
* a<<n就是將a的各個二進制位向左移動n位,高位丟棄,地位用0補充,左移n位,其實就是乘以2的n次方;a>>n就是將a的各個二進制位向右移動n位,保持符號位不變,右移n位,其實就是除以2的n次方
2> 應用
*舉例:10用二進制表示為1010,對1010進行左移1位操作,結果是10100也就是20;對1010進行右移1位操作,結果是101也就是5.
*注意:以後對變量進行乘法或除法時,運用左移或右移可以提高性能