Non signé de 32 bits entiers en Javascript
-
13-12-2019 - |
Question
Comment puis-je imiter 32bit unsiged entiers sans dépendances externes en Javascript?Astuces avec x >>> 0
ou x | 0
ne fonctionne pas (pour la multiplication, ils semblent travailler pour l'addition / soustraction), et en double une perte de précision lors de la multiplication.
Par exemple, essayez de multiplier 2654435769 * 340573321 (mod 2^32).Le résultat devrait être 1.
Cette réponse a la multiplication.Qu'en addition / soustraction / division?
Voici un lien pour wolfram alpha, la présentation de l'équation ci-dessus.
La solution
Un 32-bit unsigned int s'inscrit dans du Javascript 64-bit à virgule flottante -- il ne devrait y avoir aucune perte de précision lors de la réalisation de l'addition, la soustraction ou une division.Juste avec un masque 0xffffffff
pour rester à l'intérieur d'un entier de 32 bits.La Multiplication va au-delà de ce qui convient, mais vous avez déjà une solution pour que.