Vorzeichenlose 32-Bit-Ganzzahlen in Javascript
-
13-12-2019 - |
Frage
Wie kann ich 32-Bit-Ganzzahlen ohne Vorzeichen ohne externe Abhängigkeiten in Javascript emulieren?Tricks mit x >>> 0
oder x | 0
funktionieren nicht (bei der Multiplikation scheinen sie bei der Addition/Subtraktion zu funktionieren) und Doppelungen verlieren bei der Multiplikation an Präzision.
Versuchen Sie beispielsweise, 2654435769 * 340573321 (mod 2^32) zu multiplizieren.Das Ergebnis sollte 1 sein.
Diese Antwort hat Multiplikation.Was ist mit Addition/Subtraktion/Division?
Hier ist ein Link zu Wolfram-Alpha, wobei die obige Gleichung dargestellt wird.
Lösung
Ein 32-Bit-Int ohne Vorzeichen passt in Javascript 64-Bit-Float - Bei der Addition, Subtraktion oder Division darf kein Präzisionsverlust auftreten.Einfach maskieren 0xffffffff
um innerhalb einer 32-Bit-Ganzzahl zu bleiben.Die Multiplikation geht über das hinaus, was passt, aber dafür haben Sie bereits eine Lösung.