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:
- Calculate num = a ^ b.
- 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).