Related Articles

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

• Difficulty Level : Easy
• Last Updated : 28 Apr, 2021

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

Approach: Following are the steps:

1. Calculate n = a ^ b.
2. Check whether all bits are set in the binary representation of n. Refer to 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

 ``

## Javascript

 ``

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.