# Check if one of the numbers is one’s complement of the other

Given two non-negative integers a and b. The problem is to check if one of the two numbers is 1’s complement of the other.
The ones’ complement of a binary number is defined as the value obtained by inverting all the bits in the binary representation of the number (swapping 0s for 1s and vice versa).

Examples:

```Input : a = 10, b = 5
Output : Yes
(10)10 = (1010)2
1's complement of 10 is
= (0101)2 = (101)2 = (5)10

Input : a = 1, b = 14
Output : Yes
(14)10 = (1110)2
1's complement of 14 is
= (0001)2 = (1)2 = (1)10
```

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach: Following are the steps:

1. Calculate n = a ^ b.
2. Check whether all bits are set in the binary representation of n. Refer this post.

## CPP

 `// C++ implementation to check if one of the two ` `// numbers is one's complement of the other ` `#include ` `using` `namespace` `std; ` ` `  `// function to check if all the bits are set ` `// or not in the binary representation of 'n' ` `bool` `areAllBitsSet(unsigned ``int` `n) ` `{ ` `    ``// all bits are not set ` `    ``if` `(n == 0) ` `        ``return` `false``; ` `  `  `    ``// if true, then all bits are set ` `    ``if` `(((n + 1) & n) == 0) ` `        ``return` `true``; ` `  `  `    ``// else all bits are not set ` `    ``return` `false``; ` `} ` ` `  `// function to check if one of the two numbers ` `// is one's complement of the other ` `bool` `isOnesComplementOfOther(unsigned ``int` `a,  ` `                             ``unsigned ``int` `b) ` `{ ` `    ``return` `areAllBitsSet(a ^ b); ` `} ` ` `  `// Driver program to test above ` `int` `main() ` `{ ` `    ``unsigned ``int` `a = 10, b = 5; ` `     `  `    ``if` `(isOnesComplementOfOther(a,b)) ` `        ``cout << ``"Yes"``; ` `    ``else` `        ``cout << ``"No"``; ` `         `  `    ``return` `0;         ` `}  `

## Java

 `// Java implementation to ` `// check if one of the two ` `// numbers is one's complement ` `// of the other ` ` `  `import` `java.util.*; ` `import` `java.lang.*; ` ` `  `public` `class` `GfG{ ` ` `  `    ``// function to check ` `    ``// if all the bits are set ` `    ``// or not in the binary ` `    ``// representation of 'n' ` `    ``public` `static` `boolean` `areAllBitsSet(``long` `n) ` `    ``{ ` `        ``// all bits are not set ` `        ``if` `(n == ``0``) ` `            ``return` `false``; ` `   `  `        ``// if true, then all bits are set ` `        ``if` `(((n + ``1``) & n) == ``0``) ` `            ``return` `true``; ` `   `  `        ``// else all bits are not set ` `        ``return` `false``; ` `    ``} ` `  `  `    ``// function to check if ` `    ``// one of the two numbers ` `    ``// is one's complement ` `    ``// of the other ` `    ``public` `static` `boolean` `isOnesComplementOfOther(``long` `a,  ` `                             ``long` `b) ` `    ``{ ` `        ``return` `areAllBitsSet(a ^ b); ` `    ``} ` `     `  `    ``// Driver function  ` `    ``public` `static` `void` `main(String argc[]){ ` `        ``long` `a = ``10``, b = ``5``; ` `      `  `        ``if` `(isOnesComplementOfOther(a,b)) ` `            ``System.out.println(``"Yes"``); ` `        ``else` `            ``System.out.println(``"No"``); ` `    ``} ` `          `  `} ` ` `  `// This code is contributed by Sagar Shukla `

## Python3

 `# Python3 implementation to  ` `# check if one of the two ` `# numbers is one's complement  ` `# of the other ` ` `  ` `  `# function to check if  ` `# all the bits are set ` `# or not in the binary  ` `# representation of 'n' ` `def` `areAllBitsSet(n): ` `     `  `    ``# all bits are not set ` `    ``if` `(n ``=``=` `0``): ` `        ``return` `False``; ` ` `  `    ``# if True, then all bits are set ` `    ``if` `(((n ``+` `1``) & n) ``=``=` `0``): ` `        ``return` `True``; ` ` `  `    ``# else all bits are not set ` `    ``return` `False``; ` ` `  ` `  `# function to check if one  ` `# of the two numbers is ` `# one's complement of the other ` `def` `isOnesComplementOfOther(a, b): ` ` `  `    ``return` `areAllBitsSet(a ^ b) ` ` `  ` `  `# Driver program  ` `a ``=` `1` `b ``=` `14` `if` `(isOnesComplementOfOther(a, b)): ` `    ``print` `(``"Yes"``) ` `else``: ` `    ``print` `(``"No"``) ` `         `  `# This code is contributed by  ` `# Saloni Gupta 4 `

## C#

 `// C# implementation to check ` `// if one of the two numbers is ` `// one's complement of the other ` `using` `System; ` ` `  `class` `GFG { ` ` `  `    ``// function to check ` `    ``// if all the bits are set ` `    ``// or not in the binary ` `    ``// representation of 'n' ` `    ``public` `static` `bool` `areAllBitsSet(``long` `n) ` `    ``{ ` `        ``// all bits are not set ` `        ``if` `(n == 0) ` `            ``return` `false``; ` ` `  `        ``// if true, then all bits are set ` `        ``if` `(((n + 1) & n) == 0) ` `            ``return` `true``; ` ` `  `        ``// else all bits are not set ` `        ``return` `false``; ` `    ``} ` ` `  `    ``// function to check if ` `    ``// one of the two numbers ` `    ``// is one's complement ` `    ``// of the other ` `    ``public` `static` `bool` `isOnesComplementOfOther(``long` `a, ` `                                               ``long` `b) ` `    ``{ ` `        ``return` `areAllBitsSet(a ^ b); ` `    ``} ` ` `  `    ``// Driver function ` `    ``public` `static` `void` `Main() ` `    ``{ ` `        ``long` `a = 10, b = 5; ` ` `  `        ``if` `(isOnesComplementOfOther(a, b)) ` `            ``Console.Write(``"Yes"``); ` `        ``else` `            ``Console.Write(``"No"``); ` `    ``} ` `} ` ` `  `// This code is contributed by Sam007 `

## PHP

 ` `

Output:

```Yes
```

This article is contributed by Ayush Jauhari. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

My Personal Notes arrow_drop_up

Improved By : vt_m

Article Tags :
Practice Tags :

Be the First to upvote.

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.