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

C Bitwise Operators Programs »


Related Programs

Comments and Discussions!

Load comments ↻






Copyright © 2024 www.includehelp.com. All rights reserved.