位运算 - 判断一个数是否为2的n次方 | 求一个数位为1的个数

来源:互联网 发布:排版软件免费下载 编辑:程序博客网 时间:2024/05/16 09:18

判断一个数是否为2的n次方

 n&&!(n&n-1)

说明:n>0且!(0)

若n为2的n次方,如100,则n-1为011;n&(n-1)总为0;

 

求一个数位为1的个数

    int i=9999,count=0;

    while(i)

    {

        cout<<"i="<<i<<endl;

        i=i&(i-1);

        count++;

    }

    cout<<"count="<<count<<endl;   // 8  10011100001111