位操作的应用

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));
}

 

posted @ 2016-06-16 21:21  _in_the_way  阅读(144)  评论(0编辑  收藏  举报