Senza segno divisione 128 bit su computer a 64 bit
-
18-09-2019 - |
Domanda
ho un certo numero di 128 bit memorizzato come 2 numeri a 64 bit ( "Hi" e "LO"). Ho bisogno solo di dividerlo per un numero a 32 bit. Come potrei farlo, utilizzando le operazioni native a 64 bit da CPU?
(Per favore, nota che non ho bisogno di una libreria di precisione arbitraria. Solo bisogno di sapere come fare questa semplice divisione utilizzando le operazioni nativi. Grazie).
Soluzione
Se si memorizza il valore (128 bit) utilizzando la più ampia rappresentazione nativa possibile l'architettura in grado di gestire (64 bit) si avranno problemi di movimentazione i risultati intermedi della divisione (come già trovato :)).
Ma è sempre possibile utilizzare una rappresentazione MINORE. Che dire di quattro numeri di 32-bit? In questo modo è possibile utilizzare le operazioni a 64 bit native senza problemi di overflow.
Una semplice implementazione (in Delphi) si può trovare qui .
Altri suggerimenti
Alcuni codice c qui .