Compruebe si el número solo tiene configurados el primer y el último bit | conjunto 2

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>
Producción: 

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

Deja una respuesta

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