Dado un entero positivo n, verifique si solo el primer y el último bit están establecidos en la representación binaria de n. Escriba ‘Sí’ o ‘No’.
Ejemplos:
Entrada: 9
Salida: Sí
(9)10 = (1001)2, solo
se establecen el primer y el último bit.
Entrada: 15
Salida: No
(15)10 = (1111)2, excepto el primero y el último
, también hay otros bits que están establecidos.
Ya hemos discutido una solución aquí.
En esta publicación, se discute una solución más simple.
Cualquier número con el primer y el último bit configurado tiene la forma (1+2^n):
2^n => 10000… (n ceros)
+ 1 + 1
————————————-
(1 + 2^n) => 10000….1 (n-1 ceros)
Para cualquier número dado ‘N’ de la forma (1 + 2^n), tenemos: ((N-1) & (N-2)) = 0
((1 + 2^n) – 1) => (2^n) => 10000…. (n ceros)
& ((1 + 2^n) – 2) => &((2^n) – 1) => 01111…. (n 1)
————————————————————–
00000….
Por ejemplo: ‘9’ tiene la forma (1 + 2^3)
(9)10 => (1001)2
(8)10 => (1000)2
&(7)10 =>& (0111)2
— ——————–
(0000)2
Por lo tanto, para cualquier número dado ‘N’, si ((N-1) & (N-2)) == 0, entonces podemos decir que ‘N’ tiene solo el primer y el último conjunto de bits.
C++
// C++ to check whether the number has only // first and last bits set #include <bits/stdc++.h> using namespace std; // function to check whether the number has only // first and last bits set bool onlyFirstAndLastAreSet(unsigned int n) { if (n == 1) return true; if (n == 2) return false; return (((n - 1) & (n - 2)) == 0); } // Driver program to test above int main() { unsigned int n = 9; if (onlyFirstAndLastAreSet(n)) cout << "Yes"; else cout << "No"; return 0; }
Java
// Java to check whether // the number has only // first and last bits set class GFG { // function to check whether // the number has only // first and last bits set static boolean onlyFirstAndLastAreSet(int n) { if (n == 1) return true; if (n == 2) return false; return (((n - 1) & (n - 2)) == 0); } // Driver Code public static void main(String[] args) { int n = 9; if (onlyFirstAndLastAreSet(n)) System.out.println("Yes"); else System.out.println("No"); } } // This code is contributed // by Smitha
Python3
# Python 3 to check whether # the number has only # first and last bits set # function to check whether # the number has only # first and last bits set def onlyFirstAndLastAreSet(n): if (n == 1): return True if (n == 2): return False return (((n - 1) & (n - 2)) == 0) # Driver Code n = 9 if (onlyFirstAndLastAreSet(n)): print("Yes") else: print("No") # This code is contributed # by Smitha
C#
// C# to check whether // the number has only // first and last bits set using System; class GFG { // function to check whether // the number has only // first and last bits set static bool onlyFirstAndLastAreSet(int n) { if (n == 1) return true; if (n == 2) return false; return (((n - 1) & (n - 2)) == 0); } // Driver Code public static void Main() { int n = 9; if (onlyFirstAndLastAreSet(n)) Console.Write("Yes"); else Console.Write("No"); } } // This code is contributed // by Smitha
PHP
<?php // PHP to check whether the // number has only first and // last bits set // function to check whether // the number has only first // and last bits set function onlyFirstAndLastAreSet($n) { if ($n == 1) return true; if ($n == 2) return false; return ((($n - 1) & ($n - 2)) == 0); } // Driver Code $n = 9; if (onlyFirstAndLastAreSet($n)) echo "Yes"; else echo "No"; // This code is contributed // by Smitha ?>
Javascript
<script> // javascript to check whether // the number has only // first and last bits set // function to check whether // the number has only // first and last bits set function onlyFirstAndLastAreSet(n) { if (n == 1) return true; if (n == 2) return false; return (((n - 1) & (n - 2)) == 0); } // Driver Code var n = 9; if (onlyFirstAndLastAreSet(n)) document.write("Yes"); else document.write("No"); // This code contributed by shikhasingrajput </script>
Yes
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