位操作的应用

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));
}
原文地址:https://www.cnblogs.com/shihaochangeworld/p/5592196.html