I numeri interi a 32 bit non firmati in JavaScript
-
13-12-2019 - |
Domanda
Come posso emulare numeri interi senza scanalati a 32 bit senza dipendenze esterne in JavaScript?Trucchi con x >>> 0
o x | 0
non funzionano (per la moltiplicazione, sembrano funzionare per aggiunta / sottrazione), e il doppio perde precisione durante la moltiplicazione.
Ad esempio, prova a moltiplicare 2654435769 * 340573321 (Mod 2 ^ 32).Il risultato dovrebbe essere 1.
Questa risposta ha moltiplicazione.Che ne dici di aggiunta / sottrazione / divisione?
Ecco un link a Wolfram Alpha, presentando l'equazione sopra.
Soluzione
Un int non firmato a 32 bit instradato all'interno di Javascript float a 64 bit -- Non dovrebbe esserci alcuna perdita di precisione durante l'esecuzione di aggiunta, sottrazione o divisione.Basta maschera con 0xffffffff
per rimanere in un numero intero a 32 bit.La moltiplicazione va oltre ciò che si adatta, ma hai già una soluzione per questo.