代码如下:
/**********************************************************
*功能:计算byte有几位置1
*作者:lml 时间:2020年4月29日21:08:58
**********************************************************/
#include<stdio.h>
int main(int argc, const char *argv[])
{
int data,dataTemp=0,a=1,num=0;
scanf("%d",&data);
dataTemp = data;
while(data) //下面会把每一位为1的都清除,直到data为0
{
if(data & a){ //判断每一位是否为1
num++; //如果为1,num+1
data = data & (~a); //如果为1,把这一位清除为0
}
a = a<<1; //a左移一位,继续循环
}
printf("u-input:%d\n",dataTemp);
printf("bit-num:%d\n",num);
return 0;
}
结束。