# Find One’s Complement of an Integer

• Difficulty Level : Medium
• Last Updated : 06 Jul, 2022

Given an integer n, find the one’s complement of the integer.
Examples:

```Input  : n = 5
Output : 2

Input  : n = 255
Output : 0

Input  : n = 26
Output : 5```

Recommended Practice

Basic Approach :

The naïve approach to solve the problem would be to first convert the given number into its binary representation and then change every 1’s to 0 and 0’s to 1. After changing all 0’s and 1’s convert the binary representation to number.

Implementation of the above approach :

## C++

 `// CPP program to find 1's complement of n.``#include ``using` `namespace` `std;` `unsigned ``int` `onesComplement(unsigned ``int` `n)``{``    ``vector<``int``> v;``    ``// convert to binary representation``    ``while` `(n != 0) {``        ``v.push_back(n % 2);``        ``n = n / 2;``    ``}``    ``reverse(v.begin(), v.end());``    ``// change 1's to 0 and 0's to 1``    ``for` `(``int` `i = 0; i < v.size(); i++) {``        ``if` `(v[i] == 0)``            ``v[i] = 1;``        ``else``            ``v[i] = 0;``    ``}``    ``// convert back to number representation``    ``int` `two = 1;``    ``for` `(``int` `i = v.size() - 1; i >= 0; i--) {``        ``n = n + v[i] * two;``        ``two = two * 2;``    ``}``    ``return` `n;``}` `int` `main()``{``    ``unsigned ``int` `n = 22;``    ``cout << onesComplement(n);``    ``return` `0;``}`

## Java

 `// Java program to find 1's complement of n.` `import` `java.util.*;` `class` `GFG {``    ``static` `int` `onesComplement(``int` `n)``    ``{``        ``ArrayList v = ``new` `ArrayList();``        ``// convert to binary representation``        ``while` `(n != ``0``) {``            ``v.add(n % ``2``);``            ``n = n / ``2``;``        ``}` `        ``Collections.reverse(v);` `        ``// change 1's to 0 and 0's to 1``        ``for` `(``int` `i = ``0``; i < v.size(); i++) {``            ``if` `(v.get(i) == ``0``)``                ``v.set(i, ``1``);``            ``else``                ``v.set(i, ``0``);``        ``}``        ``// convert back to number representation``        ``int` `two = ``1``;``        ``for` `(``int` `i = v.size() - ``1``; i >= ``0``; i--) {``            ``n = n + v.get(i) * two;``            ``two = two * ``2``;``        ``}``        ``return` `n;``    ``}` `    ``// Driver code``    ``public` `static` `void` `main(String[] args)``    ``{``        ``int` `n = ``22``;` `        ``// Function call``        ``System.out.println(onesComplement(n));``    ``}``}` `// This code is contributed by phasing17`

## Python3

 `# Python3 program to find 1's complement of n.``def` `onesComplement(n):``    ``v ``=` `[]``    ` `    ``# convert to binary representation``    ``while` `(n !``=` `0``):``        ``v.append(n ``%` `2``)``        ``n ``=` `n ``/``/` `2` `    ``v.reverse()` `    ``# change 1's to 0 and 0's to 1``    ``for` `i ``in` `range``(``len``(v)):``        ``if` `(v[i] ``=``=` `0``):``            ``v[i] ``=` `1``        ``else``:``            ``v[i] ``=` `0` `    ``# convert back to number representation``    ``two ``=` `1``    ``for` `i ``in` `range``(``len``(v) ``-` `1``, ``-``1``, ``-``1``):``        ``n ``=` `n ``+` `v[i] ``*` `two``        ``two ``=` `two ``*` `2` `    ``return` `n` `# Driver code``n ``=` `22` `# Function call``print``(onesComplement(n))` `# This code is contributed by phasing17`

## Javascript

 `// JavaScript program to find 1's complement of n.``function` `onesComplement(n)``{``    ``let v = [];``    ` `    ``// convert to binary representation``    ``while` `(n != 0) {``        ``v.push(n % 2);``        ``n = Math.floor(n / 2);``    ``}``    ``v.reverse();``    ` `    ``// change 1's to 0 and 0's to 1``    ``for` `(``var` `i = 0; i < v.length; i++) {``        ``if` `(v[i] == 0)``            ``v[i] = 1;``        ``else``            ``v[i] = 0;``    ``}``    ` `    ``// convert back to number representation``    ``let two = 1;``    ``for` `(let i = v.length - 1; i >= 0; i--) {``        ``n = n + v[i] * two;``        ``two = two * 2;``    ``}``    ``return` `n;``}` `// Driver code``let n = 22;``console.log(onesComplement(n));` `// This code is contributed by phasing17`

Output

`9`

Time Complexity : O(log n)

Auxiliary Space : O(log n)

An efficient approach to this problem is as follows:
1. Find the number of bits in the given integer
2. XOR the given integer with 2^number_of_bits-1

## C++

 `// CPP program to find 1's complement of n.``#include``using` `namespace` `std;` `unsigned ``int` `onesComplement(unsigned ``int` `n)``{``   ``// Find number of bits in the given integer``   ``int` `number_of_bits = ``floor``(log2(n))+1;` `   ``// XOR the given integer with poe(2,``   ``// number_of_bits-1 and print the result``   ``return` `((1 << number_of_bits) - 1) ^ n;``}` `int` `main()``{``  ``unsigned ``int` `n = 22;``  ``cout << onesComplement(n);``  ``return` `0;``}`

## Java

 `// Java program to find 1's complement of n.``class` `GFG {``    ` `    ``static` `int` `onesComplement(``int` `n)``    ``{``        ` `        ``// Find number of bits in the``        ``// given integer``        ``int` `number_of_bits =``               ``(``int``)(Math.floor(Math.log(n) /``                             ``Math.log(``2``))) + ``1``;` `        ``// XOR the given integer with poe(2,``        ``// number_of_bits-1 and print the result``        ``return` `((``1` `<< number_of_bits) - ``1``) ^ n;``    ``}``    ` `    ``// Driver code``    ``public` `static` `void` `main(String[] args)``    ``{``        ``int` `n = ``22``;``        ` `        ``System.out.print(onesComplement(n));``    ``}``}` `// This code is contributed by Anant Agarwal.`

## Python3

 `# Python3 program to find``# 1's complement of n.``import` `math` `def` `onesComplement(n):` `    ``# Find number of bits in``    ``# the given integer``    ``number_of_bits ``=` `(``int``)(math.floor(math.log(n) ``/``                                ``math.log(``2``))) ``+` `1``;` `    ``# XOR the given integer with poe(2,``    ``# number_of_bits-1 and print the result``    ``return` `((``1` `<< number_of_bits) ``-` `1``) ^ n;` `# Driver code``n ``=` `22``print``(onesComplement(n))` `# This code is contributed by Anant Agarwal.`

## C#

 `// C# program to find 1's complement of n.``using` `System;` `class` `GFG {``    ` `    ``static` `int` `onesComplement(``int` `n)``    ``{``        ` `       ``// Find number of bits in the given integer``       ``int` `number_of_bits = (``int``)(Math.Floor(``                   ``Math.Log(n) / Math.Log(2))) + 1;``     ` `       ``// XOR the given integer with poe(2,``       ``// number_of_bits-1 and print the result``       ``return` `((1 << number_of_bits) - 1) ^ n;``    ``}``    ` `    ``//Driver code``    ``public` `static` `void` `Main ()``    ``{``        ` `        ``int` `n = 22;``        ` `        ``Console.WriteLine(onesComplement(n));``    ``}``}` `// This code is contributed by Anant Agarwal.`

## PHP

 ``

## Javascript

 ``

Output

`9`

Time Complexity : O(log n)

Auxiliary Space : O(1)

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

My Personal Notes arrow_drop_up