Extracting bits from a given number involves extracting 'k' bits starting from a specified position 'pos' by using bitwise operations like AND (&) and shifts (<<, >>). In this article, we will learn how to extract bits in C++.
Example:
Input:
num = 214
k = 3
pos = 2
Output:
5
Extracting Bits in C++
To extract k bits from a given position pos in a number, first perform right shift on num by pos bits that brings the target bits to the least significant positions, then create a mask with k bits set to 1 and apply it to shifted number (that we got after performing right shift operation) using the AND operation.
Steps to Extract Bits
Consider the above example, where num=214 (binary: 11010110), k=3 and pos=2.
- Right Shift: shifted = num >> pos
- shifted = 214 >> 2 = 53 (binary: 110101)
- Create Mask: mask = (1 << k) - 1
- mask = (1<<3) - 1 = 7 (binary 111)
- Apply Mask: result = shifted & mask
- result = 53 & 7 = 5 (binary: 101)
C++ Program to Extract in a Number
The below program demonstrates how we can extract âkâ bits from a given position âpâ in a number.
C++
// C++ program to extract 'k' bits from position 'pos' in
// number 'num'
#include <iostream>
using namespace std;
// Function to extract 'k' bits from position 'pos' in
// number 'num'
unsigned int extractBits(unsigned int num, unsigned int pos,
unsigned int k)
{
// Right shift 'num' by 'pos' bits
unsigned int shifted = num >> pos;
// Create a mask with 'k' bits set to 1
unsigned int mask = (1 << k) - 1;
// Apply the mask to the shifted number
return shifted & mask;
}
int main()
{
// Example number from which bits are to be extracted
unsigned int num = 214;
// Starting position of bits to extract
unsigned int pos = 2;
// Number of bits to extract
unsigned int k = 3;
// Call the function to extract bits
unsigned int result = extractBits(num, pos, k);
// Print the result
cout << "Extracted bits: " << result << endl;
return 0;
}
Time Complexity: O(1), as each operation within the extractBits function (right shift, mask creation, and bitwise AND) is performed in constant time.
Auxiliary Space: O(1)
Explore
C++ Basics
Core Concepts
OOP in C++
Standard Template Library(STL)
Practice & Problems