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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top