Нулевой сдвиг вправо в питоне

function(e, t) {
    return e << t | e >>> 32 - t
}

У меня есть этот метод в js, я не очень понимаю работу сдвига. Я хочу написать это на питоне. Как я могу написать эквивалентный код на python, поскольку он не поддерживает оператор сдвига вправо с нулевым заполнением, как в JS >>>.


person M A SIDDIQUI    schedule 06.03.2019    source источник
comment
мой ответ решает вашу проблему?   -  person lmiguelvargasf    schedule 06.03.2019
comment
Дубликат: Как получить логически правильный двоичный сдвиг в python Элегантное решение: def rshift(val, n): return (val % 0x100000000) >> n. Смотрите этот вопрос и ответ.   -  person Ali    schedule 22.04.2020


Ответы (1)


В Python нет встроенного оператора сдвига вправо для заполнения нулями, но вы можете легко определить свою собственную функцию zero_fill_right_shift:

def zero_fill_right_shift(val, n):
    return (val >> n) if val >= 0 else ((val + 0x100000000) >> n)

Затем вы можете определить свою функцию:

def f(e, t):
    return e << t or zero_fill_right_shift(e, 32 - t)
person lmiguelvargasf    schedule 06.03.2019