📜  检查是否设置了第K位

📅  最后修改于: 2021-05-25 02:00:46             🧑  作者: Mango

给定数字n,请检查是否设置了n的第K位。

例子:

Input : n = 5, k = 1
Output : SET
5 is represented as 101 in binary and has its first bit set.

Input : n = 2, k = 3
Output : NOT SET
2 is represented as 10 in binary, all higher i.e. beyond MSB, bits are NOT SET.

方法1(使用左移运算符)
以下是查找Kth位的值的简单步骤:

1) Left shift given number 1 by k-1 to create a number that has only set bit as k-th bit.
   temp = 1 << (k-1)
2) If bitwise AND of n and temp is non-zero, then result is SET else result is NOT SET.

例子:

n = 75 and k = 4
 temp = 1 << (k-1) = 1 << 3 = 8 
 Binary Representation of temp = 0..00001000 
 Binary Representation of n = 0..01001011 
 Since bitwise AND of n and temp is non-zero, result is SET.
C++
// CPP program to check if k-th bit
// of a given number is set or not
#include 
using namespace std;
 
void isKthBitSet(int n, int k)
{
    if (n & (1 << (k - 1)))
        cout << "SET";
    else
        cout << "NOT SET";
}
 
// Driver code
int main()
{
    int n = 5, k = 1;
    isKthBitSet(n, k);
    return 0;
}


Java
// Java program to check if k-th bit
// of a given number is set or not
 
class Number {
    public static void isKthBitSet(int n,
                                   int k)
    {
        if ((n & (1 << (k - 1))) > 0)
            System.out.print("SET");
        else
            System.out.print("NOT SET");
    }
 
    // driver code
    public static void main(String[] args)
    {
        int n = 5, k = 1;
        isKthBitSet(n, k);
    }
}
 
// This code is contributed by rishabh_jain


Python3
# Python3 code to check if k-th bit
# of a given number is set or not
 
def isKthBitSet(n, k):
    if n & (1 << (k - 1)):
        print( "SET")
    else:
        print("NOT SET")
 
# Driver code
n = 5
k = 1
isKthBitSet(n, k)
 
# This code is contributed by "Sharad_Bhardwaj".


C#
// C# program to check if k-th bit
// of a given number is set or not.
using System;
 
class GFG {
 
    public static void isKthBitSet(int n,
                                   int k)
    {
        if ((n & (1 << (k - 1))) > 0)
            Console.Write("SET");
        else
            Console.Write("NOT SET");
    }
 
    // Driver code
    public static void Main()
    {
        int n = 5, k = 1;
 
        isKthBitSet(n, k);
    }
}
 
// This code is contributed by nitin mittal.


PHP


Javascript


C++
// CPP program to check if k-th bit
// of a given number is set or not using
// right shift operator.
#include 
using namespace std;
 
void isKthBitSet(int n, int k)
{
    if ((n >> (k - 1)) & 1)
        cout << "SET";
    else
        cout << "NOT SET";
}
 
// Driver code
int main()
{
    int n = 5, k = 1;
    isKthBitSet(n, k);
    return 0;
}


Java
// Java program to check if
// k-th bit of a given number
// is set or not using right
// shift operator.
import java.io.*;
 
class GFG
{
static void isKthBitSet(int n,
                        int k)
{
    if (((n >> (k - 1)) &
               1) > 0)
        System.out.println("SET");
    else
        System.out.println("NOT SET");
}
 
// Driver code
public static void main (String[] args)
{
    int n = 5, k = 1;
    isKthBitSet(n, k);
}
}
 
// This code is contributed
// by ajit


Python3
# PHP program to check if k-th bit of
# a given number is set or not using
# right shift operator.
 
def isKthBitSet(n, k):
    if ((n >> (k - 1)) and 1):
        print("SET")
    else:
        print("NOT SET")
 
# Driver code
n, k = 5, 1
isKthBitSet(n, k)
 
# This code contributed by
# PrinciRaj1992


C#
// C# program to check if
// k-th bit of a given number
// is set or not using right
// shift operator
using System;
 
class GFG
{
static void isKthBitSet(int n,
                        int k)
{
    if (((n >> (k - 1)) &
              1) > 0)
        Console.WriteLine("SET");
    else
        Console.WriteLine("NOT SET");
}
 
// Driver code
static public void Main ()
{
    int n = 5, k = 1;
    isKthBitSet(n, k);
}
}
 
// This code is contributed
// by ajit


PHP
> ($k - 1)) & 1)
        echo "SET";
    else
        echo "NOT SET";
}
 
// Driver code
$n = 5; $k = 1;
isKthBitSet($n, $k);
 
// This code is contributed
// by akt_mit
?>


输出:

SET

方法2(使用右移运算符)
如果将n右移k-1,则如果将第K位设置为0,则最后一位为1。

C++

// CPP program to check if k-th bit
// of a given number is set or not using
// right shift operator.
#include 
using namespace std;
 
void isKthBitSet(int n, int k)
{
    if ((n >> (k - 1)) & 1)
        cout << "SET";
    else
        cout << "NOT SET";
}
 
// Driver code
int main()
{
    int n = 5, k = 1;
    isKthBitSet(n, k);
    return 0;
}

Java

// Java program to check if
// k-th bit of a given number
// is set or not using right
// shift operator.
import java.io.*;
 
class GFG
{
static void isKthBitSet(int n,
                        int k)
{
    if (((n >> (k - 1)) &
               1) > 0)
        System.out.println("SET");
    else
        System.out.println("NOT SET");
}
 
// Driver code
public static void main (String[] args)
{
    int n = 5, k = 1;
    isKthBitSet(n, k);
}
}
 
// This code is contributed
// by ajit

Python3

# PHP program to check if k-th bit of
# a given number is set or not using
# right shift operator.
 
def isKthBitSet(n, k):
    if ((n >> (k - 1)) and 1):
        print("SET")
    else:
        print("NOT SET")
 
# Driver code
n, k = 5, 1
isKthBitSet(n, k)
 
# This code contributed by
# PrinciRaj1992

C#

// C# program to check if
// k-th bit of a given number
// is set or not using right
// shift operator
using System;
 
class GFG
{
static void isKthBitSet(int n,
                        int k)
{
    if (((n >> (k - 1)) &
              1) > 0)
        Console.WriteLine("SET");
    else
        Console.WriteLine("NOT SET");
}
 
// Driver code
static public void Main ()
{
    int n = 5, k = 1;
    isKthBitSet(n, k);
}
}
 
// This code is contributed
// by ajit

的PHP

> ($k - 1)) & 1)
        echo "SET";
    else
        echo "NOT SET";
}
 
// Driver code
$n = 5; $k = 1;
isKthBitSet($n, $k);
 
// This code is contributed
// by akt_mit
?>

输出:

SET