Select Git revision
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;
}