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>
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>
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.