首页 > 代码库 > 位运算

位运算

  把一个整数减去1之后,再和原来的整数做位与运算,得到的结果相当于把整数的二进制表示中的最右边一个1变成0。

  例如:1100&(1100-1)=1100&1011=1000

  用这个小定理可以解决一些问题:

 

  判断一个整数的二进制表示中有多少个1

int count(int n){    int cnt=0;    while(n)    {        n=n&(n-1);        ++cnt;    }    return cnt;}            

  这个方法的优势在于n可以为负数

 

  判断一个整数是否是2的n次幂

bool isPow(int n){    if(n&(n-1))    {        return false;    }    else    {        return true;    }    }

 

位运算