lq1.4 One Problem 3 Solution * Number of 1 in Binary

Theme

Insert picture description here


#include <stdio.h>
#include <stdlib.h>		// itoa 

int main()
{
    
    
	int a;//a:数 
	scanf("%d",&a);
	char b[32];//用于输出二进制 
	itoa(a,b,2);//使进制转化的函数 
	printf("该数的二进制表示为:%s\n",b);
	//法一:通过逐个位与1进行与运算来计数;1_1为向左移。 
	int n1_1=0;
	for(int i=0;i<32;i++)
	{
    
    
		if((a&(1<<i))==(1<<i))
			n1_1++; 
	} 
	printf("第一种方法结果为%d\n",n1_1);
	//法一的变式:向右移来”与“。 
	int n1_2=0;
	for(int i=0;i<32;i++)
	{
    
    
		if(((a>>i)&1)==1)
			n1_2++;
	}
	printf("第一种方法变式结果为%d\n",n1_2);
	//(x-1)&x:可以去掉x二进制里的最后的一个1 
	int n2=0;
	for(;a!=0;)
	{
    
    
		a=(a-1)&a;
		n2++;
	} 
	printf("第二种方法结果为%d\n",n2);
	
}

Guess you like

Origin blog.csdn.net/June159/article/details/108391428