32-разрядные целые числа без знака в Javascript

Как я могу эмулировать 32-битные целые числа без каких-либо внешних зависимостей в Javascript? Трюки с x >>> 0 или x | 0 не работают (для умножения, они, похоже, работают для сложения / вычитания), и двойники теряют точность во время умножения.

например, попробуйте умножить 2654435769 * 340573321 (mod 2^32). Результат должен быть 1.

ответ есть умножение. Как насчет сложения / вычитания / отдел?

вот ссылка вольфрам Альфа, представляя уравнение выше.

1 ответов


32-разрядный unsigned int вписывается в Javascript 64-битный float -- не должно быть никакой потери точности при выполнении сложения, вычитания или деления. Просто маска с 0xffffffff оставаться в пределах 32-разрядного целого числа. Умножение выходит за рамки того, что подходит, но у вас уже есть решение для этого.