вы можете XOR
два числа и XOR вернет 0, если оба бита одинаковы, и 1, если оба бита различны. таким образом, результат 01110 ^ 10010
будет 11100
, и мы можем затем проанализировать его как строку, используя rindex для поиска первого 1
, с которым мы столкнемся с правой стороны, поскольку это будет первое место, где биты были другими. Это даст нам индекс слева. затем мы вычитаем это из длины строки xor, чтобы получить количество бит справа от того места, где возникает разница.
def sdb(a: int, b: int) -> int:
try:
xor_string = f'{a^b:b}'
index = len(xor_string) - xor_string.rindex('1')
except ValueError as ve:
#if no bits are different return index 0
index = 0
return index
num1 = int('01110',2)
num2 = int('10010',2)
print(sdb(num1, num2))