В Java есть побитовые операторы, которые в целом ведут себя одинаково.Однако есть небольшая разница.
Тип Java int
имеет 32-разрядную подпись, тогда как оператор JavaScript >>>
возвращает 32-разрядное целое число без знака , поэтому следующее
"" + ((1 << 31) >>> 0)
производит
"2147483648"
в JavaScript, но то же выражение выдает
"-2147483648"
в Java.
Тип Java long
позволит вамПолучите всю точность, необходимую для репликации манипуляций с битами JavaScript, но вы должны быть уверены, что замаскируете их до 32 битов со знаком при использовании >>>
, где величина сдвига может быть 0 (или кратна 32).Вы можете получить 32 младших бита long
, выполнив
(myLong & 0xffffffffL)