#位运算符
与(&) 或(|) 非(~) 异或(^)
>> 和 << 运算符将二进制位进行右移或者左移操作
>>> 运算符将用0填充高位; >> 运算符用符号为填充高位,没有<< 运算符
位运算技巧
-
判断奇偶数
x & 1
-
获取二进制第n位是0还是1
x » n * 1
- 交换两个整数变量的值
int a = 1; int b = 2; a = a ^ b; b = a ^ b; a = a ^ b;
-
不用判断语句,求整数的绝对值
num * (1 - ( (num » 32) « 1))
异或性质
异或是不进位加法 1 ^ 1 = 0; 1 ^ 0 = 1; 0 ^ 1 = 0; 0 ^ 0 = 0; 性质:
- 交换律可以任意交换因子位置,而结果不变
- 结合律:(a^b)^ b = a ^ (b ^ b)
- 对任何数x都存在,x ^ 0 = x; x ^ x = 0;
- 自反性,A ^ b ^ b = A ^ 0 = A