位操作符有:
& //按位与 0&0=0 1&1=1 1&0=0 0&1=0
| //按位或 0|0=0 0|1=1 1|0=1 1|1=1
^ //按位异或 相同为0 相异位1
注:他们的操作数必须是整数
#include <stdio.h>
int main()
{
int num1 = 1;//00000000 00000000 00000000 00000001
int num2 = 2;//00000000 00000000 00000000 00000010
printf("%d\n",num1 & num2);//0
printf("%d\n", num1 | num2);//3
printf("%d\n", num1 ^ num2);//3
return 0;
}
不使用第三变量,交换a,b
#include <stdio.h>
int main()
{
int a = 10;
int b = 20;
a = a^b;//a=10^20 b=20
b = a^b;//b=10^20^20=10
a = a^b;//a=10^20^10=20
printf("%d\n%d\n", a, b);
return 0;
}