位操作的应用
1.利用位操作求两个整数的平均数
(a&b) + ((a^b) >> 1)
2.利用位操作来求两个整数之和
int Add(int a, int b) { if (b == 0) return a; int sum, tmp; sum = a^b; tmp = (a&b) << 1; return Add(sum, tmp); }
3.交换两个数
void Swap(int a, int b) { cout << "Before Swap a = " << a << " b = " << b << endl; a = a^b; b = a^b; a = a^b; cout << "After Swap a = " << a << " b = " << b << endl; }
4.一个数是不是 2 的幂
bool IsTwoPower(int a) { return !(a&(a - 1)); }