How to extract 'k' bits from a given position 'p' in a number?
Examples:
Input : number = 171
k = 5
p = 2
Output : The extracted number is 21
171 is represented as 10101011 in binary,
so, you should get only 10101 i.e. 21.
Input : number = 72
k = 5
p = 1
Output : The extracted number is 8
72 is represented as 1001000 in binary,
so, you should get only 01000 i.e 8.
1) Right shift number by p-1.
2) Do bit wise AND of k set bits with the modified number. We can get k set bits by doing (1 << k) - 1.
// C++ program to extract k bits from a given
// position.
#include <bits/stdc++.h>
using namespace std;
// Function to extract k bits from p position
// and returns the extracted value as integer
int bitExtracted(int number, int k, int p)
{
return (((1 << k) - 1) & (number >> (p - 1)));
}
// Driver code
int main()
{
int number = 171, k = 5, p = 2;
cout << "The extracted number is " <<
bitExtracted(number, k, p);
return 0;
}
// This code is contributed by importantly
// C program to extract k bits from a given
// position.
#include <stdio.h>
// Function to extract k bits from p position
// and returns the extracted value as integer
int bitExtracted(int number, int k, int p)
{
return (((1 << k) - 1) & (number >> (p - 1)));
}
// Driver code
int main()
{
int number = 171, k = 5, p = 2;
printf("The extracted number is %d",
bitExtracted(number, k, p));
return 0;
}
// Java program to extract k bits from a given
// position.
class GFG {
// Function to extract k bits from p position
// and returns the extracted value as integer
static int bitExtracted(int number, int k, int p)
{
return (((1 << k) - 1) & (number >> (p - 1)));
}
// Driver code
public static void main (String[] args) {
int number = 171, k = 5, p = 2;
System.out.println("The extracted number is "+
bitExtracted(number, k, p));
}
}
# Python program to extract k bits from a given
# position.
# Function to extract k bits from p position
# and returns the extracted value as integer
def bitExtracted(number, k, p):
return ( ((1 << k) - 1) & (number >> (p-1) ) );
# number is from where 'k' bits are extracted
# from p position
number = 171
k = 5
p = 2
print ("The extracted number is ", bitExtracted(number, k, p))
// C# program to extract k bits from a given
// position.
using System;
class GFG {
// Function to extract k bits from p position
// and returns the extracted value as integer
static int bitExtracted(int number, int k, int p)
{
return (((1 << k) - 1) & (number >> (p - 1)));
}
// Driver code
public static void Main()
{
int number = 171, k = 5, p = 2;
Console.WriteLine("The extracted number is "
+ bitExtracted(number, k, p));
}
}
//This code is contributed by Anant Agarwal.
<?php
//PHP program to extract
// k bits from a given
// position.
// Function to extract k
// bits from p position
// and returns the extracted
// value as integer
function bitExtracted($number, $k, $p)
{
return (((1 << $k) - 1) &
($number >> ($p - 1)));
}
// Driver Code
$number = 171; $k = 5; $p = 2;
echo "The extracted number is ",
bitExtracted($number, $k, $p);
// This code is contributed by Ajit
?>
<script>
// JavaScript program to extract k bits from a given
// position.
// Function to extract k bits from p position
// and returns the extracted value as integer
function bitExtracted(number, k, p)
{
return (((1 << k) - 1) & (number >> (p - 1)));
}
// Driver code
let number = 171, k = 5, p = 2;
document.write("The extracted number is ",
bitExtracted(number, k, p));
// This code is contributed by Manoj.
</script>
Output :
The extracted number is 21
Time Complexity: O(1)
Auxiliary Space: O(1)