按位与 &
按位异或 ^
1.相同数值进行异或,结果肯定是0,比如9^9
2.交换 9^5^6 == 9^6^5
3.任何数值跟0进行异或,结果还是原来的数值,9^0 == 9
4.a^b^a == a^a^b == 0^b == b
按位取反 ~
~0000 0000 0000 0000 0000 0000 0000 1001
1111 1111 1111 1111 1111 1111 1111 0110
左移 <<
0000 0000 0000 0000 0000 0000 0000 0000
00 0000 0000 0000 0000 0000 0000 100100
9<<1 -> 9 * 2的1次方 == 18
9<<2 -> 9 * 2的2次方 ==36
9<<n -> 9 * 2的n次方
右移 >>
0000 0000 0000 0000 0000 0000 0000 0000
000000 0000 0000 0000 0000 0000 0000 10
111111 1111 1111 1111 1111 1111 1111 10
8>>1 -> 8/2 == 4
8>>2 -> 8/2的2次方 == 2
8>>n -> 8/2的n次方
练习:用位与&运算符判断变量的奇偶性
int main()
{
/*
15: 1111
9: 1001
14: 1110
10: 1010
*/
int a = 15;
a&1 == 1 // 奇数
a&1 == 0 // 偶数
/*
if (a%2) {
printf("奇数\n");
} else {
printf("偶数\n");
}*/
//a%2==0?printf("偶数\n"):printf("奇数\n");
//a%2?printf("奇数\n"):printf("偶数\n");
return 0;
}