Encuentre el valor del k-ésimo bit en representación binaria

Dado un número n y k (1 <= k <= 32), encuentre el valor del k-ésimo bit en la representación binaria de n. Los bits se numeran de derecha (bit menos significativo) a izquierda (bit más significativo).

Ejemplos: 

Input :  
n = 13, k = 2
Output : 
0
Explanation:
Binary representation of 13 is 1101.
Second bit from right is 0.

Input :  
n = 14, k = 3
Output : 
1
Explanation:
Binary representation of 14 is 1110.
Third bit from right is 1.

Enfoque 1:
1) Encuentre un número con todos 0 excepto la k-ésima posición. Obtenemos este número usando ( 1 << (k-1) ). Por ejemplo si k = 3, entonces ( 1 << 2) nos da (00..00100). 
2) Haga bit a bit y del número obtenido anteriormente con n para encontrar si el k-ésimo bit en n está configurado o no. 
 

A continuación se muestra la implementación del enfoque anterior:

C++

// CPP program to find k-th bit from right
#include <bits/stdc++.h>
using namespace std;
 
void printKthBit(unsigned int n, unsigned int k)
{
    cout << ((n & (1 << (k - 1))) >> (k - 1));
}
 
// Driver Code
int main()
{
    unsigned int n = 13, k = 2;
   
    // Function Call
    printKthBit(n, k);
    return 0;
}

Java

// Java program to find
// k-th bit from right
import java.io.*;
 
class GFG {
    static void printKthBit(long n, long k)
    {
        System.out.println(
            ((n & (1 << (k - 1))) >> (k - 1)));
    }
 
    // Driver Code
    public static void main(String[] args)
    {
        long n = 13, k = 2;
       
        // Function Call
        printKthBit(n, k);
    }
}
 
// This code is contributed by anuj_67.

Python3

# Python 3 program to find
# k-th bit from right
 
def printKthBit(n, k):
 
    print((n & (1 << (k - 1))) >> (k - 1))
 
# Driver Code
n = 13
k = 2
 
# Function Call
printKthBit(n, k)
 
# This code is contributed by Smitha

C#

// C# program to find k-th bit from right
using System;
 
class GFG {
 
    static void printKthBit(long n, long k)
    {
        Console.WriteLine((n & (1 << (k - 1))) >> (k - 1));
    }
 
    // Driver Code
    public static void Main()
    {
        long n = 13, k = 2;
         
        // Function Call
        printKthBit(n, k);
    }
}
 
// This code is contributed by anuj_67.

PHP

<?php
// PHP program to find
// k-th bit from right
 
function printKthBit($n, $k)
{
    echo ($n & (1 << ($k - 1)));
}
 
// Driver Code
$n = 13; $k = 2;
printKthBit($n, $k);
 
// This code is contributed
// by anuj_67.
?>

Javascript

<script>
 
// JavaScript program to find k-th bit from right
 
function printKthBit(n, k)
{
    document.write((n & (1 << (k - 1))) >> (k - 1));
}
 
// Driver Code
var n = 13, k = 2;
 
// Function Call
printKthBit(n, k);
 
</script>
Producción

0

Complejidad de tiempo: O(1), el código se ejecutará en un tiempo constante.
Espacio auxiliar: O(1), no se requiere espacio adicional, por lo que es una constante.

Enfoque 2:

1) Desplace a la derecha el número (k-1) veces, de modo que el bit k-ésimo quede a la derecha (bit menos significativo). Podemos hacer esto por n >> (k-1). Por ejemplo, para el número 37(100101) y k = 3, ( 32 >> (3-1) ) será igual a 9(1001) .

2) Luego, simplemente verifique que el último bit esté configurado o no. Podemos hacer esto fácilmente comprobando si el número es par o impar.

A continuación se muestra la implementación del enfoque anterior:

C++

// CPP program to find k-th bit from right
#include <bits/stdc++.h>
using namespace std;
  
void printKthBit(unsigned int n, unsigned int k)
{
    cout << (n >> (k-1)) % 2;
}
  
// Driver Code
int main()
{
    unsigned int n = 37, k = 3;
    
    // Function Call
    printKthBit(n, k);
    return 0;
}
// This code is contributed by priyam26.

Python3

# Python 3 program to find k-th bit from right
  
def printKthBit(n, k):
  
    print((n >> (k-1)) % 2)
  
# Driver Code
n = 37
k = 3
  
# Function Call
printKthBit(n, k)
 
# This code is contributed by priyam26.

Java

// Java program to find k-th bit from right
import java.io.*;
  
class GFG {
    static void printKthBit(long n, long k)
    {
        System.out.println((n >> (k-1)) % 2);
    }
  
    // Driver Code
    public static void main(String[] args)
    {
        long n = 37, k = 3;
        
        // Function Call
        printKthBit(n, k);
    }
}
 
// This code is contributed by priyam26.

Javascript

<script>
  
// JavaScript program to find k-th bit from right
  
function printKthBit(n, k)
{
    document.write((n >> (k-1)) % 2);
}
  
// Driver Code
var n = 37, k = 3;
  
// Function Call
printKthBit(n, k);
  
// This code is contributed by priyam26.
</script>
Producción

1

Complejidad de tiempo: O(1), el código se ejecutará en un tiempo constante.
Espacio auxiliar: O(1), no se requiere espacio adicional, por lo que es una constante.

Publicación traducida automáticamente

Artículo escrito por kartik y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *