32 биты без знака в JavaScript
-
13-12-2019 - |
Вопрос
Как я могу подражать 32-битными целыми числами без каких-либо внешних зависимостей в JavaScript?Хитрости с генеракодицетагкодом или генеракодицетагкодом не работают (для умножения, они, кажется, работают на добавление / вычитании), и удваивает точность во время умножения.
Например, попробуйте умножить 2654435769 * 340573321 (мод 2 ^ 32).Результат должен быть 1.
Этот ответ имеет умножение.Как насчет добавления / вычитания / разделения?
Вот ссылка к Wolfram Alpha, представляя уравнение выше.
Решение
32-битный unsigned int подходит в javascript's 64-битный поплавок -- Не должно быть потери точности при выполнении добавления, вычитания или разделения.Просто маска с 0xffffffff
, чтобы остаться в 32-битном целом.Умножение выходит за рамки того, что подходит, но у вас уже есть решение для этого.