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
Solution
Best explaination could be found here
class Solution {
func rangeBitwiseAnd(_ m: Int, _ n: Int) -> Int {
var m = m, n = n
while(m < n){
// -b is the 2's complement of b when do bitwise or with b
//we get LSB and we subtract that from b
n -= (n & -n)
}
return n
}
}