# C program to count number of bits set to 1 in an Integer

Count number of bit set to 1 in an integer using C program: Here, we are going to implement a C program that will count the total set bits (bits which are set to 1) in an integer number using bitwise operator.
Submitted by Radib Kar, on December 25, 2018

## Problem statement

Write a C program to count number of bits set to 1 in an Integer.

Solution: We can use bitwise operator here to solve the problem.

Pre-requisite: Input number n

## Algorithm

```1)  Set count=1

2)  Do bit wise AND with n and 1.
n & 1

let n be a7a6a5a4a3a2a1a0
1->00000001
So doing bitwise AND (refer to published article on bitwise operators)
will result in all bits 0 except the LSB which will be a0.
If a0 is 0 then the all bits are not set
Thus,
IF
n& 1 == 1
count++;
END IF
Right shift n by 1
n=n>>1

3)  IF n==0
Print count
ELSE
REPEAT step 1, 2
```

## Example with Explanation

```Checking for 7
7->00000111

Initially, count=0

So first iteration:
n=7 //00000111
n & 1 =1
so , count=1
n=n>>1 (n=3) //00000011

So second iteration:
n=3 //00000011
n & 1 =1
count=2
n=n>>1 (n=1) //00000001

So third iteration:
n=1 //00000001
n & 1 =1
count=3
n=n>>1 (n=0) //00000000
So, Print count, 3
```

## C Implementation

```#include <stdio.h>

int main() {
unsigned int n;
printf("enter the integer\n");
scanf("%d", & n);

int count = 0;

while (n != 0) {
if (n & 1 == 1) { //if current bit 1
count++; //increase count
}
n = n >> 1; //right shift
}

printf("no of bits those are 1 ");
printf("in its binary representation: %d\n", count);

return 0;
}
```

### Output

```First run:
enter the integer
7
no of bits those are 1 in its binary representation: 3

Second run:
enter the integer
12
no of bits those are 1 in its binary representation: 2
```