C language: Calculate how many bits are set to 1 in a byte

code show as below:

/**********************************************************
*功能:计算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;
}

Finish.

Guess you like

Origin blog.csdn.net/qq_19693355/article/details/105848932