位运算符 按位与 &——整数n的二进制数中1的个数
整数n的二进制数中1的个数
编写一个函数,输入是一个整数,返回其二进制表达式中数字位数为 ‘1’ 的个数
代码如下:
int func(int n)//char ch
{
int count = 0;
while(n > 0)
{
count++;
n&=(n-1);
}
return count;
}
原理:n&(n-1) 按位与 每计算一次,低位减一
如上图中二进制8与自身减一进行按位与操作
如上图二进制3与自身减一进行按位与操作
-由此可的:
- 8的二进制中有一位1,因此进行了一次该操作后变为0
- 3的二进制中有两位1,进行两次该操作后变为0
则n&=(n-1)运算的次数可以表示用来表示n的二进制中1的位数
原题链接:位1的个数