**Difficulty: Medium**

**Frequency: N/A**

Given a range [m, n] where 0 <= m <= n <= 2147483647, return the bitwise AND of all numbers in this range, inclusive.

For example, given the range [5, 7], you should return 4.

**My solution:**

**Data structure:**

**Steps:**

**Complexity:**

**Test cases:**

**Corner cases:**

**Code:**

class Solution { public: int rangeBitwiseAnd(int m, int n) { int shift = 0; while (m != n) { shift++; m = m >> 1; n = n >> 1; } return m << shift; } };

**Another solution:**

**Data structure:**

**steps:**

**Complexity**:

**Code**:

**Things to learn:**