divisão 128 bits sem sinal no computador de 64 bits
-
18-09-2019 - |
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).
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 .