Поведение
Tha JavaScript описано в MDN
Операнды всех побитовых операторов преобразуются в 32-разрядные целые числа со знаком в формате дополнения до двух, за исключением нуля. заполнить сдвиг вправо, что приводит к 32-разрядному целому числу без знака.
Таким образом, вы получите отрицательные числа в JavaScript, поскольку оно обрабатывает значение как 32-разрядное число со знаком. Бит 0x80000000
является знаковым битом.
Спецификатор в конце приведенной выше цитаты указывает способ получить тот же результат, что и Python:
console.log((1 | 0x80000000) >>> 0);
>>>
- оператор смещения вправо с нулевым заполнением. Сдвиг на 0 бит не меняет значение, но он конвертируется в беззнаковое.
Python целые числа имеют бесконечную точность, поэтому они не переносятся на отрицательные числа, когда получают 32 бита.