题目:输入一个整数n,求n的2进制表示中1的个数
分析可得:n&(n-1)的操作是将n的2进制表示中最右边的1变成0;
所以能得到对应的代码:
int numOf1(int n)
{
int count=0;
while(n)
{
count++;
n=n&(n-1);
}
return count;
}
同理判断n是不是2的整数次幂
return !(n&(n-1));
题目:输入一个整数n,求n的2进制表示中1的个数
分析可得:n&(n-1)的操作是将n的2进制表示中最右边的1变成0;
所以能得到对应的代码:
int numOf1(int n)
{
int count=0;
while(n)
{
count++;
n=n&(n-1);
}
return count;
}
return !(n&(n-1));