Given two non-negative numbers n and m. The problem is to find the largest number having n number of set bits and m number of unset bits in its binary representation.
Note : 0 bits before leading 1 (or leftmost 1) in binary representation are counted
Contraints: 1 <= n, 0 <= m, (m+n) <= 31
Input : n = 2, m = 2 Output : 12 (12)10 = (1100)2 We can see that in the binary representation of 12 there are 2 set and 2 unsets bits and it is the largest number. Input : n = 4, m = 1 Output : 30
Following are the steps:
- Calculate num = (1 << (n + m)) – 1. This will produce a number num having (n + m) number of bits and all are set.
- Now, toggle the last m bits of num and then return the toggled number. Refer this post.
For greater values of n and m, you can use long int and long long int datatypes to generate the required number.
This article is contributed by Ayush Jauhari. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to firstname.lastname@example.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
- Find the smallest number with n set and m unset bits
- Count unset bits of a number
- Check if a number has same number of set and unset bits
- Unset the last m bits
- Largest number less than X having at most K set bits
- Unset bits in the given range
- Check whether all the bits are unset in the given range
- Check whether all the bits are unset in the given range or not
- Count unset bits in a range
- Python | Count unset bits in a range
- Count total unset bits in all the numbers from 1 to N
- Find a number X such that (X XOR A) is minimum and the count of set bits in X and B are equal
- Check if bits of a number has count of consecutive set bits in increasing order
- Toggle bits of a number except first and last bits
- Maximize a given unsigned number number by swapping bits at it's extreme positions.
Improved By : vt_m