
- C++ Basics
- C++ Home
- C++ Overview
- C++ Environment Setup
- C++ Basic Syntax
- C++ Comments
- C++ Data Types
- C++ Variable Types
- C++ Variable Scope
- C++ Constants/Literals
- C++ Modifier Types
- C++ Storage Classes
- C++ Operators
- C++ Loop Types
- C++ Decision Making
- C++ Functions
- C++ Numbers
- C++ Arrays
- C++ Strings
- C++ Pointers
- C++ References
- C++ Date & Time
- C++ Basic Input/Output
- C++ Data Structures
- C++ Object Oriented
- C++ Classes & Objects
- C++ Inheritance
- C++ Overloading
- C++ Polymorphism
- C++ Abstraction
- C++ Encapsulation
- C++ Interfaces
Count unset bits in a range in C++
We are given an integer number let’s say, num and the range with left and right values. The task is to firstly calculate the binary digit of a number and then set the loop from the left digit till the right digit and then in the given range calculate the unset bits.
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, left = 2, right = 5
Output − Count of total unset bits in a range are − 2
Explanation −Binary representation of a number 50 is 110010 and we have a range starting from left = 2 which is having bit as 1 and ending to right = 5 which is having bit 1 and in between the range we have two 0’s. So the count of unset bits is 2.
Input − int number = 42, left = 1, right 6
Output − Count of total unset bits in a range are − 3
Explanation − Binary representation of a number 42 is 101010 and we have a range starting from left = 1 which is having bit as 1 and ending to right = 6 which is having bit 0 and in between the range we have three 0’s. So the count is 3.
Approach used in the below program is as follows
Input the number in a variable of integer type and also the range with left and right integer values.
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
Start loop FOR from i to left till right value
Inside the loop, increment the total number of digits between the given range
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 a temporary variable let’s say, a with ((1 << right) - 1) ^ ((1 << (left - 1)) - 1);
Also, set count with count & a
In the end, set count as the total number of bits in a range - total number of set bits in a range.
Example
#include<iostream> using namespace std; //Count total unset bits in a range unsigned int unset_bits(unsigned int number, unsigned int left, unsigned int right){ unsigned int count = 0; unsigned int total_bits = 0; unsigned i; //display the 8-bit number cout<<"8-bit number of "<<number<<" is: "; for (i = 1 << 7; i > 0; i = i / 2){ (number & i)? cout<<"1": cout<<"0"; } //calculate total number of bits in a given range for(i = left; i<=right; i++){ total_bits++; } //calculate the total bits in a number while (number){ count += number & 1; number >>= 1; } //calculate the set bit in a range int a = ((1 << right) - 1) ^ ((1 << (left - 1)) - 1); count = count & a; //subtract set bits from the total bits in a range count = total_bits - count; cout<<"\nCount of total unset bits in a range are: "<<count; } int main(){ unsigned int number = 80; unsigned int left = 1, right = 4; unset_bits(number, left, right); return 0; }
Output
If we run the above code it will generate the following output −
8-bit number of 80 is: 01010000 Count of total unset bits in a range are: 2
- Related Articles
- Python program to count unset bits in a range.
- Count unset bits of a number in C++
- Python Count set bits in a range?
- Count set bits in a range in C++
- Copy set bits in a range in C++
- Check if a number has same number of set and unset bits in C++
- Find the largest number with n set and m unset bits in C++
- Count total bits in a number in C++
- Program to count total number of set bits of all numbers in range 0 to n in Python
- Java program to count total bits in a number
- C# program to count total bits in a number
- Digit Count in Range
- Count set bits in an integer in C++
- Count Unary Numbers in a Range in C++
- Check if bits of a number has count of consecutive set bits in increasing order in Python
