写一个函数将a的二进制(补码)统计出来有几个1(3种方法)

方法1.


int count_bit_one(unsigned int a)
{
	int count=0;
	while(a)
	{
		if(a%2==1)
		{
			count++;
		}
		a=a/2;
	}
	return count;
}
int main()    
{
	int a=0;
	int b=0;
	scanf("%d",&a);
	b=count_bit_one(a);
	printf("count=%d\n",b);
	return 0;
}

写一个函数将a的二进制(补码)统计出来有几个1(3种方法)_第1张图片写一个函数将a的二进制(补码)统计出来有几个1(3种方法)_第2张图片

方法2.

int count_bit_one(int a)
{
	int count=0;
	int i=0;
	for(i=0;i<32;i++)
	{
		if(((a>>i)&1)==1)
		{
			count ++;
		}
	}
	return count;
}
int main()   
{
	int a=0;
	int b=0;
	scanf("%d",&a);
	b=count_bit_one(a);
	printf("count=%d\n",b);
	return 0;
}

写一个函数将a的二进制(补码)统计出来有几个1(3种方法)_第3张图片

 方法3.



int count_bit_one(unsigned int a)
{
	int count=0;
	while(a)
	{
		a=a&(a-1);
		count++;
	}
	return count;
}
int main()    
{
	int a=0;
	int b=0;
	scanf("%d",&a);
	b=count_bit_one(a);
	printf("count=%d\n",b);
	return 0;
}

写一个函数将a的二进制(补码)统计出来有几个1(3种方法)_第4张图片

你可能感兴趣的:(算法,数据结构,c语言)