# Find One’s Complement of an Integer

Last Updated : 30 Jan, 2023

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`

## C#

 `// C# program to find 1's complement of n.` `using` `System;` `using` `System.Collections;`   `public` `class` `GFG{` `    `  `    ``public` `static` `int` `onesComplement(``int` `n)` `    ``{` `        ``ArrayList v = ``new` `ArrayList();` `        ``// convert to binary representation` `        ``while` `(n != 0) {` `            ``v.Add(n % 2);` `            ``n = n / 2;` `        ``}`   `        ``v.Reverse();`   `        ``// change 1's to 0 and 0's to 1` `        ``for` `(``int` `i = 0; i < v.Count; i++) {` `            ``if` `(Convert.ToInt32(v[i]) == 0)` `                ``v[i]= 1;` `            ``else` `                ``v[i]= 0;` `        ``}` `        `  `        ``// convert back to number representation` `        ``int` `two = 1;` `        ``for` `(``int` `i = v.Count - 1; i >= 0; i--) {` `            ``n = n + Convert.ToInt32(v[i]) * two;` `            ``two = two * 2;` `        ``}` `        ``return` `n;` `    ``}` `    `  `    ``// Driver code` `    ``static` `public` `void` `Main (){` `        ``int` `n = 22;`   `        ``// Function call` `        ``Console.WriteLine(onesComplement(n));` `    ``}` `}`   `// This code is contributed by Pushpesh Raj.`

## 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 pow(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 pow(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 pow(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 pow(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)

Previous
Next