# Question

Formatted question description: https://leetcode.ca/all/201.html

```
201 Bitwise AND of Numbers Range
Given a range [m, n] where 0 <= m <= n <= 2147483647,
return the bitwise AND of all numbers in this range, inclusive.
Example 1:
Input: [5,7]
Output: 4
Example 2:
Input: [0,1]
Output: 0
```

# Algorithm

There are three digits in example [5, 7]. Write their binary as:

`101 110 111`

The result of the AND is 100. If we observe carefully, we can conclude that the final number is the **common part** of the left side of all the numbers in the range.

If the above example is not obvious, let’s look at another range[26, 30] , Their binary is as follows:

`11010 11011 11100 11101 11110`

After discovering the pattern, we only need to write code to find the common part on the left.

Shift m and n, shift one bit to the right at a time, until m and n are equal, record all the number of shifts i, and then shift m back to the left by i, to get the final result.

# Code

Java