Leetcode Bitwise AND of Numbers Range problem solution

In this Leetcode Bitwise AND of Numbers Range problem solution we have Given two integers left and right that represent the range [left, right], return the bitwise AND of all numbers in this range, inclusive.

Problem solution in Python.

import math
class Solution:
def rangeBitwiseAnd(self, left: int, right: int) -> int:
ans = 0
if left == 0 or right == 0: return 0
while left and right:
left_most_sbit = int(math.log2(left))
right_most_sbit = int(math.log2(right))
if left_most_sbit==right_most_sbit:
ans = ans | 1<<left_most_sbit
left = left - (1<<left_most_sbit)
else:
break
right = right - (1<<right_most_sbit)
return ans

Problem solution in Java.

public int rangeBitwiseAnd(int m, int n) {
int result = 0, num, i;
for (i=31;i>=0;i--) {
num = 1 << i;
if ((num & n) > 0) {
if ((num & m) > 0)
result += num;
else
break;
}
}
return result;
}
}

Problem solution in C++.

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

Problem solution in C.

int rangeBitwiseAnd(int m, int n){
int sum=0,val1=m,val2=n;
long int k=1;
while(m>0){
if(m&1 && n&1){
if(val2-val1<k)
sum+=k;
}
m=m>>1;
n=n>>1;
k=k<<1;
}
return sum;
}