@VX299

Как получить одинаковый результат в побитовых операциях Go и JS (node)?

Подскажите, как добиться одинакового результата при выполнении простейшей побитовой операции (сдвиг)
12402 << 32 | 10027.

Выполняю в Go int64(12402<<32|10027) и получаю 53266184415019 (в PHP так же),
В JS результатом является: 14203

Что в JS не хватает? Что дописать, что-то не могу понять
  • Вопрос задан
  • 91 просмотр
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
В JS битовые операции выполняются только с 32-битными целыми.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Lynn
@Lynn
nginx, js, css
Конкретно этот результат можно получить так:
> 12402 * Math.pow(2, 32) + 10027
53266184415019

но вообще, в JS целые числа заканчиваются на 2^53-1, так что если результат каких-либо операций может превышать это значение, то вам нужно использовать BigInt или какие-нибудь библиотеки для работы с большими числами.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы