南昌理工acm集训队
当我们利用程序进行运算的时候,计算机里都是运用二进制去计算的,而位运算就是以二进制来计算的,了解二进制也可以帮助我们更好去理解计算机的工作方式。
首先先了解位运算的基本规则
举个例子,当我们进行8 | 4的计算时:
8—>01000 8 | 4:0 1 0 0 0
4—>00100 0 0 1 0 0
——————
12—>01100 0 1 1 0 0
位运算技巧:
1:判断奇偶性
当一个数是偶数的时候其二进制最后一位一定是0
用if ((a & 1) == 0)代替if (a % 2 == 0)即可
2:判断是否为二的次幂
x & (x-1)
x = 1100
x-1 = 1011
x & (x-1) = 1000
运用上诉方法即可消去末尾的1 ,而2次幂的二进制中只有一个1,用此方法就可以消去这唯一的1使其等于0。
3:简化程序:
当我们需要写一个二的累乘时只需让二进制左移一位,而除法则是右移。
4:交换两个数
void Swap(int &a, int &b){
if (a != b){
a ^= b;
b ^= a;
a ^= b;
}
}
如果面对一些束手无策的题目时不妨考虑一下位运算。