It seems that no one has post this solution which is pretty simple.

If we go through all the numbers from m to n, only those digits which are constantly 1 can remain to be 1 at last. So we simply operate m xor n to calculate the number of zeros at the end of result.

The final result should be n>>zeors concatenates to zeros. Here is the code.

```
class Solution:
# @param {integer} m
# @param {integer} n
# @return {integer}
def rangeBitwiseAnd(self, m, n):
if m == n:
return m
zeros = len(bin(m^n)) - 2
return (n >> zeros) * (2**zeros)
```