1.判断int变量是奇数还是偶数
- a & 1 = 0 偶数
- a & 1 = 1 奇数
2.求平均值
比如,有两个int类型的变量a和b,求平均数应该是二者相加再除以2,然后,相加后,有可能溢出,所以此时采用位运算
平均值 = (x & y )+ ((x ^ y)>>1)
3.判断一个int变量是不是2的n次幂
((x & (x - 1))== 0)&&(x != 0)
该式为true,则是2的n次幂,反之不是。
4.交换两个int变量
x ^= y;
y ^= x;
x ^= y;
5.求绝对值
int abs( int x )
{
int y ;
y = x >> 31 ;
return (x^y)-y ; //or: (x+y)^y
}
6. 取模运算,采用位运算实现:
a % (2^n) 等价于 a & (2^n - 1)
7. 乘法运算 采用位运算实现
a * (2^n) 等价于 a << n
8. 除法运算转化成位运算
a / (2^n) 等价于 a>> n
9. 求相反数
(~x+1)
10.
a % 2 等价于 a & 1