Given a non-negative number n and two values l and r. The problem is to count the number of unset bits in the range l to r in the binary representation of n, i.e, to count unset bits from the rightmost lth bit to the rightmost rth bit.
Input : n = 42, l = 2, r = 5 Output : 2 (42)10 = (101010)2 There are '2' unset bits in the range 2 to 5. Input : n = 80, l = 1, r = 4 Output : 4
We have existing solution for this problem please refer Count unset bits in a range link. We can solve this problem quickly in Python. Approach is very simple,
- Convert decimal into binary using bin(num) function.
- Now remove first two characters of output binary string because bin function appends ‘0b’ as prefix in output string by default.
- Slice string starting from index (l-1) to index r and reverse it, then count unset bits in between.
- Count unset bits in a range
- Unset bits in the given range
- Check whether all the bits are unset in the given range or not
- Check whether all the bits are unset in the given range
- Python | Count set bits in a range
- Count unset bits of a number
- Count total unset bits in all the numbers from 1 to N
- Count set bits in a range
- Range query for count of set bits
- Count number of set bits in a range using bitset
- Unset the last m bits
- Find the smallest number with n set and m unset bits
- Find the largest number with n set and m unset bits
- Python Bin | Count total bits in a number
- Count set bits using Python List comprehension
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to email@example.com. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.