#include <stdio.h>
int countSetBits(unsigned int n) {
int sum = 0;
for (int i = 0; i < 32; i++)
{
if(n & (1 << i))
{
sum++;
}
}
return sum;
}
int main() {
int n;
scanf("%d", &n);
printf("%d", countSetBits(n));
return 0;
}
Solving Approach
Iterate over the number with a shifting mask. Increment the counter for each logical true.