利用移位运算符实现位的计算
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int count_one_bits(int val)
{
int one = 0;//统计为1的位的个数
//通过右移位的方式不断对值的第一位进行统计,直到值变为0
for (; val != 0; val >>= 1)
{
//例如001&011=001,结果为1,则说明当前位为1
if ((val & 1) == 1)
{
one++;
}
}
return one;
}
int main()
{
int value = 0;
printf("PLEASE INPUT A NUMBER:");
scanf("%d",&value);
int ret = count_one_bits(value);
printf("%d\n", ret);
return 0;
}
此代码只适用于无符号数的实现,负数不可实现