# Python | Count unset bits in a range

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.

Examples:

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.

`# Function to count unset bits in a range` ` ` `def` `unsetBits(n,l,r):` ` ` ` ` `# convert n into it's binary` ` ` `binary ` `=` `bin` `(n)` ` ` ` ` `# remove first two characters` ` ` `binary ` `=` `binary[` `2` `:]` ` ` ` ` `# reverse string` ` ` `binary ` `=` `binary[` `-` `1` `::` `-` `1` `]` ` ` ` ` `# count all unset bit '0' starting from index l-1` ` ` `# to r, where r is exclusive` ` ` `print` `(` `len` `([binary[i] ` `for` `i ` `in` `range` `(l` `-` `1` `,r) ` `if` `binary[i]` `=` `=` `'0'` `]))` ` ` `# Driver program` `if` `__name__ ` `=` `=` `"__main__"` `:` ` ` `n` `=` `42` ` ` `l` `=` `2` ` ` `r` `=` `5` ` ` `unsetBits(n,l,r)` |

Output:

2

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. To complete your preparation from learning a language to DS Algo and many more, please refer **Complete Interview Preparation Course****.**

In case you wish to attend **live classes **with experts, please refer **DSA Live Classes for Working Professionals **and **Competitive Programming Live for Students**.