How to count the odd bits of a number in C

1 Answer

0 votes
#include <stdio.h>

void print_bits(unsigned int n) { 
    for (int i = 31; i >= 0; i--)
       printf("%d", (n >> i) & 1);
	printf("\n");
}

unsigned int count_odd_bits(unsigned int n) { 
  unsigned int count = 0, i = 1; 
  while (n) { 
    if (i % 2) {
        count += n & 1; 
    }
    n >>= 1;
    i++;
  } 
  return count; 
} 
  
int main(int argc, char **argv) 
{
    int n = 1357; 
     
    print_bits(n);
    printf("%d\n", count_odd_bits(n)); 
 
    return 0; 
}
     
       
/*
run:
     
00000000000000000000010101001101
5
  
*/

 



answered Mar 5, 2019 by avibootz
edited Mar 5, 2019 by avibootz

Related questions

1 answer 64 views
64 views asked Oct 25, 2025 by avibootz
1 answer 86 views
1 answer 188 views
1 answer 98 views
1 answer 179 views
...