位运算装逼指南:
1.判断奇偶数
一般方式:
if (a%2 == 0)
{
//偶数
}
位运算方式:
if ((a & 1) == 0)
{
//偶数
}
2.交换变量
一般方式:
int a = 0;
int b = 1;
int temp;
temp = a;
a = b;
b = temp;
位运算方式:
a ^= b;
b ^= a;
a ^= b;
位运算原理:符合交换律,转化步骤如下
a = a ^ b
b = b ^ a = b ^ (a ^ b) = b ^ b ^ a = 0 ^ a = a
a = a ^ b = a ^ (b ^ a) = a ^ a ^ b = 0 ^ b = b
3. x乘以2的n次幂等价于:
x << n
4. 计算绝对值:
一般方式:
math.abs(x)
位运算方式:
public int BitAbs(int num)
{
return num >>31 == 0 ? num : ~num+1;
}
5. 取反:
一般方式:
x = -x
位运算方式:
x = ~x + 1