将输入的数字按位与上一个 1 ,
例如:‘5‘(的二进制表示为 101)按位与上’1‘(的二进制表示为001)->001(此时记录一下),然后将‘5’右移一位在于‘1’按位与一下,以此类推。
代码实现:
int main()
{
int n = 0;
int count = 0;//记录1的个数
scanf_s("%d",&n);
for (int i = 0; i < 32; i++)
{
if (1 == ((n >> i) & 1))//右移 i 位再与 1 按位与
{
count++;
}
}
printf("%d", count);//打印此数二进制中 1 的个数
return 0;
}