Pregunta

¿Cómo puedo emular números enteros sin definición de 32 bits sin ninguna dependencia externa en JavaScript?Los trucos con x >>> 0 o x | 0 no funcionan (para la multiplicación, parecen funcionar para la adición / resta), y los dobles pierden la precisión durante la multiplicación.

Por ejemplo, intente multiplicar 2654435769 * 340573321 (mod 2 ^ 32).El resultado debe ser 1.

Esta respuesta tiene multiplicación.¿Qué pasa con la adición / resta / división?

Aquí hay un enlace a Wolfram Alpha, presentando la ecuación anterior.

¿Fue útil?

Solución

Un INT sin firmar de 32 bits dentro de Javascript's flotador de 64 bits -- No debe haber pérdida de precisión al realizar la adición, la resta o la división.Solo máscara con 0xffffffff para permanecer dentro de un entero de 32 bits.La multiplicación va más allá de lo que se ajusta, pero ya tienes una solución para eso.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top