Formatted question description: https://leetcode.ca/all/476.html

# 476. Number Complement (Easy)

Given a positive integer, output its complement number. The complement strategy is to flip the bits of its binary representation.

Note:

1. The given integer is guaranteed to fit within the range of a 32-bit signed integer.
2. You could assume no leading zero bit in the integer’s binary representation.

Example 1:

Input: 5
Output: 2
Explanation: The binary representation of 5 is 101 (no leading zero bits), and its complement is 010. So you need to output 2.


Example 2:

Input: 1
Output: 0
Explanation: The binary representation of 1 is 1 (no leading zero bits), and its complement is 0. So you need to output 0.


Companies:
Cloudera

Related Topics:
Bit Manipulation

## Solution 1.

For example:

num          = 00000101

// OJ: https://leetcode.com/problems/number-complement/

// Time: O(1)
// Space: O(1)
class Solution {
public:
int findComplement(int num) {
}
};


Java

class Solution {
public int findComplement(int num) {
int power = (int) (Math.log(num) / Math.log(2));
long max = (long) Math.pow(2, power + 1) - 1;
return (int) (max - num);
}
}