Given a positive integer, output its complement number. The complement strategy is to flip the bits of its 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.

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.
  3. This question is the same as 1009: https://leetcode.com/problems/complement-of-base-10-integer/

Solution

Here we can use complement operator ~ to flip the bits. As complement operator will flip all 32 bits so to get the actual result we need to mask with all set bits.

For Example:

Input: 5 Binary Representation of 5: 101 Complement of 5: 11111111111111111111111111111010 Given input number only having 3-bit representation[101], So we are only interested in the last 3 bits of the Complemented Number, to get the last 3 digits and mask the rest of the leftmost bits we can do AND with 00000000000000000000000000000111.
Code

Output

2

We encourage you to write a comment if you have a better solution or having any doubt on the above topic.

Leave a Reply

Your email address will not be published. Required fields are marked *