http://www.codeproject.com/cpp/MulDiv64.asp
Comunque in linea di principio l'algoritmo per la moltiplicazione č facile... Basta suddividere gli operandi a 64 in "cifre" a 32 bit ed usare l'algoritmo per la moltiplicazione che si usa quando si fanno i conti a mano...
I risultati intermedi li metti in interi a 64 bit e poi li sommi... Ovviamente devi stare attento agli overflow...
Ad esempio:
A1 A2 *
B1 B2 =
______
Il risultato a 128 bit sarebbe: [A2*B2 + [(A1*B2) << 32]] + [A2*B1 + [(A1*B1) << 32] << 32
Quindi si capisce che il risultato su 64 bit č: A2*B2 + [(A1*B2 + A2*B1) << 32]...
Ovviamente a patto che A1*B2 e A2*B1 stiano su 32 bit...questo lo verifichi facilmente memorizzandoli su 64 bit...e testando che sia singolarmente che la loro somma sia inferiore di 2^32...