# Check whether the two numbers differ at one bit position only

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)= (1_{10}101)_{2}(9)= (1_{10}001)_{2}Both the numbers differ at one bit position only, i.e, differ at the3rdbit 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).