Skip to content
Snippets Groups Projects
Select Git revision
  • 8a7d3ae23a880ca7daebdd0feebd0d1705dba90d
  • main default protected
2 results

count1.c

Blame
  • count1.c 986 B
    #include<stdio.h>
    #define VALUE_ONE 1
    
    // Count number of 1 (binary)
    int count_one(unsigned int a)
    {
    	int const con = 1;
    	int static numCalls = 100;
    	int count = 0;
    	// con++; -> ERROR
    	while(a != 0)
    	{	count += a & VALUE_ONE;
    		a >>=VALUE_ONE;
    		//if((a>>i) & 1)
    		//	count ++;
    		//	if문 보다 아래처럼 사용하는 것이 훨씬 빠름
    		//count += (a>>i) & 1;
    	//count += a & 1; // 000..0001과 비교즉 마지막 숫자와 계속 비교
    	//a >>=1; //한칸씩 오른쪽 쉬프트 
    	}
    	fprintf(stderr, "Call : %d\n", numCalls);
    	numCalls++;
    	return count;
    }
    
    int main()
    {
    	int i;
    	unsigned int in_a;
    	fscanf(stdin, "%u", &in_a);
    	fprintf(stdout, "%u \t : ", in_a);
    	for(i=31; i>= 0; i--)
    	{	
    		fprintf(stdout, "%d", ((in_a>>i) & 1));
    		if(i % 4 == 0)
    		       	fprintf(stdout, " ");
    	}
    	fprintf(stdout, "\n");
    
    	count_one(in_a);
    	count_one(in_a);
    	count_one(in_a);
    	count_one(in_a);
    
    	fprintf(stdout, "\n");
    	fprintf(stdout, "count : %d\n", count_one(in_a));
    	return 0;
    	
    }