IINM, >>>
- сдвиг вправо, который сохраняет значение самого левого бита.Это приводит к тому, что знак числа остается неизменным (т. Е. Отрицательные числа вставляются как 1 в качестве их MSB вместо 0).
В Python целые числа могут быть сколь угодно большими.Не существует осмысленной концепции старшего значащего бита, поскольку количество битов не ограничено.Поэтому сдвиг вправо просто сдвигает все биты вправо и сохраняет знак.Итак, в Python вы можете просто использовать >>
.
Edit:
Как указывал @Sven Marnach, операция >>>
полностью противоположна тому, что я думал вJavascript.Таким образом, >>>
не сохраняет знак, в то время как >>
, кажется, делает это.Другим интересным фактом является то, что -1>>1
, по-видимому, -1
, а не 0
в Javascript.Излишне говорить, что мои знания Javascript действительно ограничены, и я не уверен, каков точный эквивалент этих операторов в Python.
Одним из вариантов может быть явное ограничение количества используемых битов (возможно, с помощью ctypes.c_int
), а затем установка самого левого бита вручную, как требуется в пользовательской функции сдвига вправо.