Pergunta

I têm um número de 128 bits armazenados como números 2 64-bit ( "ALTA" e "Lo"). Eu preciso apenas para dividi-lo por um número de 32 bits. Como eu poderia fazer isso, usando as operações de 64 bits nativas do CPU?

(Por favor, note que eu não preciso de uma biblioteca de precisão arbitrária. Só precisa saber como fazer esta divisão simples usando operações nativas. Obrigado).

Foi útil?

Solução

Se você estiver armazenando o valor (128 bits) usando a maior representação nativa possível sua arquitetura pode manipular (64-bits) você terá problemas em lidar com os resultados intermediários da divisão (como você já encontrou :)).

Mas você sempre pode usar uma representação MENOR. Que tal quatro números de 32-bits? Desta forma, você pode usar as operações nativo de 64 bits sem problemas de transbordamento.

Uma implementação simples (em Delphi) pode ser encontrada aqui .

Outras dicas

Alguns código c aqui .

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