Complement of Base 10 Integer

easy bit manipulation mask xor

Problem

The complement of an integer is obtained by flipping every bit in its binary representation (no leading zeros). Given a non-negative integer n, return its complement. For example, 5 is 101 in binary, whose complement is 010, i.e. 2.

Inputn = 5
Output2
5 = 101₂, flipping each bit gives 010₂ = 2.

def bitwise_complement(n):
    mask = 1
    while mask < n:
        mask = (mask << 1) | 1
    return mask ^ n
function bitwiseComplement(n) {
  let mask = 1;
  while (mask < n) {
    mask = (mask << 1) | 1;
  }
  return mask ^ n;
}
class Solution {
    public int bitwiseComplement(int n) {
        int mask = 1;
        while (mask < n) {
            mask = (mask << 1) | 1;
        }
        return mask ^ n;
    }
}
int bitwiseComplement(int n) {
    int mask = 1;
    while (mask < n) {
        mask = (mask << 1) | 1;
    }
    return mask ^ n;
}
Time: O(log n) Space: O(1)