判断一个数是否为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次方,并介绍了求一个数位为1的个数的方法。通过实例代码,展示了算法实现细节。
判断一个数是否为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

被折叠的 条评论
为什么被折叠?