📜  从数字的给定位置提取“ k”位。

📅  最后修改于: 2021-05-25 10:48:29             🧑  作者: Mango

如何从数字中给定位置“ p”中提取“ k”位?
例子:

Input : number = 171
             k = 5 
             p = 2
Output : The extracted number is 21
171 is represented as 0101011 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)右移数字p-1。
2)用修改后的数字对k个设置位进行按位与运算。我们可以通过(1 << k)– 1来获得k个设置位。

C
// C program to extract k bits from a given
// position.
#include 
 
// 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
// 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
# 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#
// 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
> ($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
?>


Javascript


输出 :

The extracted number is 21