判断一个数是否为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
判断一个数是否为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