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

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

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.