Open In App

Check whether the two numbers differ at one bit position only

Last Updated : 15 Jun, 2022
Comments
Improve
Suggest changes
Like Article
Like
Report

Given two non-negative integers a and b. The problem is to check whether the two numbers differ at one bit position only or not.
Examples: 
 

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


 


Approach: Following are the steps:
 

  1. Calculate num = a ^ b.
  2. Check whether num is a power of 2 or not. Refer this post.


 

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>

Output: 
 

Yes


Time Complexity: O(1).

Auxiliary Space: O(1).
 


Next Article
Article Tags :
Practice Tags :

Similar Reads