Pergunta

Como posso emular 32bit unsiged inteiros sem dependências externas em Javascript?Truques com x >>> 0 ou x | 0 não trabalho (para multiplicação, eles parecem trabalhar para a adição / subtração), e dobra a perder precisão durante a multiplicação.

Por exemplo, tente multiplicar 2654435769 * 340573321 mod (2^32).O resultado deve ser de 1.

Esta resposta tem de multiplicação.O que sobre a adição / subtração / divisão?

Aqui está um link para o wolfram alpha, apresentando a equação acima.

Foi útil?

Solução

Uma versão de 32-bit unsigned int se encaixa dentro de Javascript 64-bit float -- não deve haver nenhuma perda de precisão ao executar a adição, a subtração ou divisão.Apenas a máscara com 0xffffffff ficar dentro de um inteiro de 32 bits.Multiplicação vai além do que se encaixa, mas você já tem uma solução para isso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top