We can write solution for this problem in two way i.e.

- Using non-recursive method
- Using recursive method.

Here is the C program to count set bits in an integer with the help of bit-wise operator using non-recursive method.

/* 1. Non-recursive : C program to Count set bits in an integer */

#include<stdio.h>

/*

* numOfSetBits() : to get number of set bits of

* positive integer n using bit-wise operator

*/

int numOfSetBits ( unsigned int num )

{

int numSetBits = 0;

while ( num )

{

numSetBits += num & 1;

num >>= 1;

}

return numSetBits;

}

int main()

{

int n = 14, result = 0;

result = numOfSetBits( n );

printf ( "The number of set bits are %d\n", result );

return 0;

}

Here is the C program to count set bits in an integer with the help of bit-wise operator using recursive method.

/* 2. Recursive : C program to Count set bits in an integer */

#include<stdio.h>

/*

* numOfSetBits() : to get number of set bits of

* positive integer n using bit-wise operator

*/

int numOfSetBits ( int num )

{

if ( num == 0)

return 0;

else

/* if last bit set add 1 else add 0 */

return (num & 1) + numOfSetBits ( num >> 1);

}

int main()

{

int n = 14, result = 0;

result = numOfSetBits( n );

printf ( "The number of set bits are %d\n", result );

return 0;

}

*To contribute :*

*” If you like Advance Computing and would like to contribute, you can mail your article to **“computingadvance@gmail.com”. **You will get credit as your name , email id, designation with article on this blog. “*