Dado un número no negativo n . Encuentre la posición del bit no establecido más a la derecha en la representación binaria de n , considerando el último bit en la posición 1, el penúltimo bit en la posición 2 y así sucesivamente. Si no hay 0 en la representación binaria de n . luego imprima «-1».
Ejemplos:
Input : n = 9 Output : 2 (9)10 = (1001)2 The position of rightmost unset bit in the binary representation of 9 is 2. Input : n = 32 Output : 1
Enfoque: Los siguientes son los pasos:
- Si n = 0, devuelve 1.
- Si todos los bits de n están establecidos, devuelve -1. Consulte esta publicación.
- De lo contrario, realice bit a bit no en el número dado (operación equivalente al complemento de 1). Sea num = ~n.
- Obtener la posición del bit establecido más a la derecha de num . Esta será la posición del bit no establecido más a la derecha de n .
C++
// C++ implementation to get the position of rightmost unset bit #include <bits/stdc++.h> using namespace std; // function to find the position // of rightmost set bit int getPosOfRightmostSetBit(int n) { return log2(n&-n)+1; } // function to get the position of rightmost unset bit int getPosOfRightMostUnsetBit(int n) { // if n = 0, return 1 if (n == 0) return 1; // if all bits of 'n' are set if ((n & (n + 1)) == 0) return -1; // position of rightmost unset bit in 'n' // passing ~n as argument return getPosOfRightmostSetBit(~n); } // Driver program to test above int main() { int n = 9; cout << getPosOfRightMostUnsetBit(n); return 0; }
Java
// Java implementation to get the // position of rightmost unset bit class GFG { // function to find the position // of rightmost set bit static int getPosOfRightmostSetBit(int n) { return (int)((Math.log10(n & -n)) / Math.log10(2)) + 1; } // function to get the position // of rightmost unset bit static int getPosOfRightMostUnsetBit(int n) { // if n = 0, return 1 if (n == 0) return 1; // if all bits of 'n' are set if ((n & (n + 1)) == 0) return -1; // position of rightmost unset bit in 'n' // passing ~n as argument return getPosOfRightmostSetBit(~n); } // Driver code public static void main(String arg[]) { int n = 9; System.out.print(getPosOfRightMostUnsetBit(n)); } } // This code is contributed by Anant Agarwal.
Python3
# Python3 implementation to get the position # of rightmost unset bit # import library import math as m # function to find the position # of rightmost set bit def getPosOfRightmostSetBit(n): return (m.log(((n & - n) + 1),2)) # function to get the position ot rightmost unset bit def getPosOfRightMostUnsetBit(n): # if n = 0, return 1 if (n == 0): return 1 # if all bits of 'n' are set if ((n & (n + 1)) == 0): return -1 # position of rightmost unset bit in 'n' # passing ~n as argument return getPosOfRightmostSetBit(~n) # Driver program to test above n = 13; ans = getPosOfRightMostUnsetBit(n) #rounding the final answer print (round(ans)) # This code is contributed by Saloni Gupta.
C#
// C# implementation to get the // position of rightmost unset bit using System; class GFG { // function to find the position // of rightmost set bit static int getPosOfRightmostSetBit(int n) { return (int)((Math.Log10(n & -n)) / Math.Log10(2)) + 1; } // function to get the position // of rightmost unset bit static int getPosOfRightMostUnsetBit(int n) { // if n = 0, return 1 if (n == 0) return 1; // if all bits of 'n' are set if ((n & (n + 1)) == 0) return -1; // position of rightmost unset bit in 'n' // passing ~n as argument return getPosOfRightmostSetBit(~n); } // Driver code public static void Main() { int n = 9; Console.Write(getPosOfRightMostUnsetBit(n)); } } // This code is contributed by Sam007
PHP
<?php // PHP implementation to get the // position of rightmost unset bit // function to find the position // of rightmost set bit function getPosOfRightmostSetBit( $n) { return ceil(log($n &- $n) + 1); } // function to get the position // of rightmost unset bit function getPosOfRightMostUnsetBit( $n) { // if n = 0, return 1 if ($n == 0) return 1; // if all bits of 'n' are set if (($n & ($n + 1)) == 0) return -1; // position of rightmost unset bit in 'n' // passing ~n as argument return getPosOfRightmostSetBit(~$n); } // Driver Code $n = 9; echo getPosOfRightMostUnsetBit($n); // This code is contributed by anuj_67. ?>
Javascript
<script> // JavaScript implementation to get the position of rightmost unset bit // function to find the position // of rightmost set bit function getPosOfRightmostSetBit(n) { return Math.log2(n&-n)+1; } // function to get the position of rightmost unset bit function getPosOfRightMostUnsetBit(n) { // if n = 0, return 1 if (n == 0) return 1; // if all bits of 'n' are set if ((n & (n + 1)) == 0) return -1; // position of rightmost unset bit in 'n' // passing ~n as argument return getPosOfRightmostSetBit(~n); } // Driver program to test above let n = 9; document.write(getPosOfRightMostUnsetBit(n)); // This code is contributed by Manoj. </script>
Producción:
2
Complejidad del tiempo – O(1)
Complejidad espacial – O(1)
Este artículo es una contribución de Ayush Jauhari . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA