异或运行符(^)
- 位相同,结果为0;
- 位不同,结果为1;
3个特点
操作 | 结果 | 示例 |
---|---|---|
0异或任何数 | 任何数 | a ^= 0 |
1异或任何数 | 任何数取反 | a ^= 1 |
任何数异或自己 | 把自己置0 | a ^= a |
常见应用
- 翻转指定位
aa ^= ( 1 << 2 ); // 翻转第2位
- 不使用零时变量,交换两个值
a = a^b; // a=10100111
b = b^a; // b=10100001
a = a^b; // a=00000110
- 将变量置零
a ^= a; // 将变量a置零
- 判断两个值是否相等
if ( ( a ^ b ) == 0 ) { printf( "a = b" ); }