Während zum Multiplizieren 2 große Zahlen für einen effizienten Algorithmus sucht, kam über die unter c-Methode in einem Forum: -Multiplikation Algorithmus Bitshifts
...
typedef unsigned long long ULL;
ULL multiply (ULL a,ULL b)
{
ULL result = 0;
while(a > 0)
{
if(a & 1)
{
result += b;
}
a >>= 1;
b <<= 1;
}
return result;
}
...
Die obige algo erfordert keinen Multiplikationsbefehl, sondern nutzt bitshift und nur Additionsoperation (wodurch es schneller wird).
Überprüft, dass die Methode richtig funktioniert, aber ich verstehe nicht ganz, wie es funktioniert. Eine Erklärung wäre hilfreich.
Beachten Sie, dass einige CPUs sehr langsame Shift-Operationen haben können - 68008 war ein Beispiel. So kann Ihre Laufleistung variieren. – tofro
"so machen es schneller" - in keiner Weise –
Der Algorithmus ist das gleiche, was Sie in der Schule für lange Multiplikation gelernt haben; außer dass der erste Operand in Basis 2 genommen wird. Es wird manchmal "Russische Multiplikation" genannt. –