Given a non-negative integer N. The task is to invert the bits of the number N and print the decimal equivalent of the number obtained after inverting the bits.
Note: Leading 0’s are not being considered.
Input : 11 Output : 4 (11)10 = (1011)2 After inverting the bits, we get: (0100)2 = (4)10. Input : 20 Output : 11 (20)10 = (10100)2. After inverting the bits, we get: (01011)2 = (11)10.
The similar problem is already discussed in Invert actual bits of a number.
In this article, an efficient approach using bitwise operators is discussed. Below is the step by step algorithm to solve the problem:
- Calculate the total number of bits in the given number. This can be done by calculating:
X = log2N
Where, N is the given number and X is the total number of bits of N.
- The next step is to generate a number with X bits and all bits set. That is, 11111….X-times. This can be done by calculating:
Step-1: M = 1 << X Step-2: M = M | (M-1)
Where M is the required X-bit number with all bits set.
- The final step is to calculate the bit-wise XOR of M with N, which will be our answer.
Below is the implementation of the above approach:
Time Complexity: O(log2n)
Auxiliary Space: O(1)
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.
- Invert actual bits of a number
- Program to count number of set bits in an (big) array
- Program to find the Nth natural number with exactly two bits set
- Write an Efficient C Program to Reverse Bits of a Number
- Check if bits of a number has count of consecutive set bits in increasing order
- Finding the Parity of a number Efficiently
- Toggle bits of a number except first and last bits
- Invert the Kth most significant bit of N
- Maximize a given unsigned number number by swapping bits at it's extreme positions.
- Find the largest number smaller than integer N with maximum number of set bits
- Maximum number of contiguous array elements with same number of set bits
- Check if a number has same number of set and unset bits
- Set all even bits of a number
- Set all odd bits of a number
- Same Number Of Set Bits As N
- Number with set bits only between L-th and R-th index
- Toggle all even bits of a number
- For every set bit of a number toggle bits of other
- Toggle first and last bits of a number
- Check if all bits of a number are set