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).

È stato utile?

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 .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top