Related Articles

Related Articles

Check whether the two numbers differ at one bit position only
  • Difficulty Level : Medium
  • Last Updated : 18 Mar, 2019

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++

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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".

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?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
?>

chevron_right


Output:

Yes

Time Complexity: O(1).

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.




My Personal Notes arrow_drop_up
Recommended Articles
Page :