Count Unset Bits of a Number in C++



We are given an integer number let’s say, num and the task is to firstly calculate the binary digit of a number and then calculate the total unset bits of a number.

Unset bits in a binary number is represented by 0. Whenever we calculate the binary number of an integer value then it is formed as the combination of 0’s and 1’s. So, the digit 0 is known as unset bit in the terms of the computer.

Input − int number = 50

Output − Count of total unset bits in a number are − 3

Explanation − Binary representation of a number 50 is 110010 and if we calculate it in 8-digit number then two 0’s will be appended in the beginning. So, the total unset bits in a number are 3.

Input − int number = 10

Output − Count of total unset bits in a number are: 6

Explanation − Binary representation of a number 10 is 00001010 and if we calculate it in 8-digit number then four 0’s will be appended in the beginning. So, the total unset bits in a number are 6.

Approach used in the below program is as follows

  • Input the number in a variable of integer type

  • Declare a variable count to store the total count of set bits of type unsigned int

  • Start loop FOR from i to 1<<7 and i > 0 and i to i / 2

  • Inside the loop, check num & 1 == TRUE then print 1 else print 0

  • Inside the loop, increment the value of total digits in a number.

  • Start loop while to calculate the total count of bits till number isn’t 0

  • Inside the loop, set count = count + number & 1 and also set number >>=1

  • Set count as total digits in a number - total set bits in a number.

  • Print the count

Example

 Live Demo

#include<iostream>
using namespace std;
//Count total unset bits in a number
unsigned int unset_bits(unsigned int number){
   unsigned int total_digits = 0;
   unsigned int count = 0;
   unsigned i;
   //display the total 8-bit number
   cout<<"8-bit digits of "<<number<<" is: ";
   for (i = 1 << 7; i > 0; i = i / 2){
      (number & i)? cout<<"1": cout<<"0";
      total_digits++;
   }
   //calculate the total unset bits in a number
   while (number){
      count += number & 1;
      number >>= 1;
   }
   count = total_digits - count;
   cout<<"\nCount of total unset bits in a number are: "<<count;
}
int main(){
   int number = 50;
   unset_bits(number);
   return 0;
}

Output

If we run the above code it will generate the following output −

8-bit digits of 50 is: 00110010
Count of total set bits in a number are: 5
Updated on: 2020-10-31T05:52:23+05:30

728 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements