Pregunta

Tengo un número de 128 bits almacenado como 2 números de 64 bits ( "HI" y "LO"). Sólo tengo que dividirlo por un número de 32 bits. ¿Cómo podría hacerlo, usando las operaciones de 64 bits nativos de la CPU?

(Por favor, tenga en cuenta que no necesito una biblioteca de precisión arbitraria. Sólo hay que saber cómo hacer esta división simple usando operaciones nativas. Gracias).

¿Fue útil?

Solución

Si va a almacenar el valor (128 bits) utilizando el mayor representación nativa posible que su arquitectura puede manejar (64 bits), tendrá problemas para manejar los resultados intermedios de la división (como usted ya ha encontrado :)).

Pero siempre se puede utilizar una menor representación. ¿Qué hay de cuatro números de 32 bits? De esta manera se podría utilizar las operaciones de 64-bits nativos sin problemas de desbordamiento.

Una aplicación sencilla (en Delphi) se puede encontrar aquí .

Otros consejos

Algunos código c aquí .

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