Compruebe si los dos números difieren solo en una posición de bit

Dados dos enteros no negativos a y b . El problema es verificar si los dos números difieren solo en una posición de bit o no.
Ejemplos: 
 

Input : a = 13, b = 9
Output : Yes
(13)10 = (1101)2
(9)10 = (1001)2
Both the numbers differ at one bit position only, i.e,
differ at the 3rd bit from the right.

Input : a = 15, b = 8
Output : No

Enfoque: Los siguientes son los pasos:
 

  1. Calcular num = a ^ b.
  2. Comprueba si num es una potencia de 2 o no. Consulte esta publicación.

C++

// C++ implementation to check whether the two
// numbers differ at one bit position only
#include <bits/stdc++.h>
using namespace std;
 
// function to check if x is power of 2
bool isPowerOfTwo(unsigned int x)
{
    // First x in the below expression is
    // for the case when x is 0
    return x && (!(x & (x - 1)));
}
 
// function to check whether the two numbers
// differ at one bit position only
bool differAtOneBitPos(unsigned int a,
                       unsigned int b)
{
    return isPowerOfTwo(a ^ b);
}
 
// Driver program to test above
int main()
{
    unsigned int a = 13, b = 9;
    if (differAtOneBitPos(a, b))
        cout << "Yes";
    else
        cout << "No";
    return 0;
}

Java

// Java implementation to check whether the two 
// numbers differ at one bit position only
import java.io.*;
import java.util.*;
 
class GFG {
      // function to check if x is power of 2
      static boolean isPowerOfTwo(int x)
      {
             // First x in the below expression is
             // for the case when x is 0
             return x!= 0 && ((x & (x - 1)) == 0);
      }
 
      // function to check whether the two numbers
      // differ at one bit position only
      static boolean differAtOneBitPos(int a, int b)
      {
             return isPowerOfTwo(a ^ b);
      }
      // Driver code
      public static void main(String args[])
      {
             int a = 13, b = 9;
             if (differAtOneBitPos(a, b) == true)
                 System.out.println("Yes");
             else
                 System.out.println("No");
      }
}
 
// This code is contributed by rachana soma

Python3

# Python3 implementation to check whether the two
# numbers differ at one bit position only
 
# function to check if x is power of 2
def isPowerOfTwo( x ):
 
    # First x in the below expression is
    # for the case when x is 0
    return x and (not(x & (x - 1)))
 
# function to check whether the two numbers
# differ at one bit position only
def differAtOneBitPos( a , b ):
    return isPowerOfTwo(a ^ b)
     
# Driver code to test above
a = 13
b = 9
if (differAtOneBitPos(a, b)):
    print("Yes")
else:
    print( "No")
 
# This code is contributed by "Sharad_Bhardwaj".

C#

// C# implementation to check whether the two
// numbers differ at one bit position only
using System;
class GFG
{
     
    // function to check if x is power of 2
    static bool isPowerOfTwo(int x)
    {
        // First x in the below expression is
        // for the case when x is 0
        return x != 0 && ((x & (x - 1)) == 0);
    }
 
    // function to check whether the two numbers
    // differ at one bit position only
    static bool differAtOneBitPos(int a, int b)
    {
        return isPowerOfTwo(a ^ b);
    }
     
    // Driver code
    public static void Main()
    {
        int a = 13, b = 9;
        if (differAtOneBitPos(a, b) == true)
            Console.WriteLine("Yes");
        else
            Console.WriteLine("No");
    }
}
 
// This code is contributed by ihritik

PHP

<?php
// PHP implementation to check
// whether the two numbers differ
// at one bit position only
 
    // function to check if x is power of 2
    function isPowerOfTwo($x)
    {
        $y = 0;
         
        // First x in the below expression is
        // for the case when x is 0
        if($x && (!($x & ($x - 1))))
        $y = 1;
        return $y;
    }
     
    // function to check whether
    // the two numbers differ at
    // one bit position only
    function differAtOneBitPos($a,$b)
    {
        return isPowerOfTwo($a ^ $b);
    }
     
        // Driver Code
        $a = 13;
        $b = 9;
        if (differAtOneBitPos($a, $b))
            echo "Yes";
        else
            echo "No";
     
// This code is contributed by Sam007
?>

Javascript

<script>
 
// JavaScript program to check whether the two 
// numbers differ at one bit position only
 
      // function to check if x is power of 2
      function isPowerOfTwo(x)
      {
       
             // First x in the below expression is
             // for the case when x is 0
             return x!= 0 && ((x & (x - 1)) == 0);
      }
   
      // function to check whether the two numbers
      // differ at one bit position only
      function differAtOneBitPos(a, b)
      {
             return isPowerOfTwo(a ^ b);
      }
  
// Driver code         
        let a = 13, b = 9;
             if (differAtOneBitPos(a, b) == true)
                 document.write("Yes");
             else
                 document.write("No");
        
       // This code is contributed by code_hunt.
</script>

Producción: 
 

Yes

Complejidad Temporal: O(1).

Espacio Auxiliar: O(1).
 

Publicación traducida automáticamente

Artículo escrito por ayushjauhari14 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 *