Ich habe versucht, die "Potenzierung durch Quadrieren" -Algorithmusn in C zu implementieren, aber mein Programm hat ein seltsames Verhalten. Als erstes ist hier ein kleiner Code-Schnipsel:C Implementierung der Potenzierung durch Quadrieren
long long fast_power_1(long long base, long long power){
long long result = 1;
while (power > 0)
{
if (power % 2 == 0)
{
power = power/2;
base = base * base;
}
else
{
power = power - 1;
result = (result*base);
power = power/2;
base = (base * base);
}
}
return result;}
Wenn ich die Funktion mit rufen:
printf("%d\n",fast_power_1(2,100));
Ich erwarte, dass der Ausgang so etwas wie 976.371.285 sein, aber das Ergebnis ist 0 und ich weiß nicht verstehe ganz genau warum.
Fyi, '% d' ist nicht der richtige Formatbezeichner für ein' long long'. Konsultieren Sie Ihre Dokumentation. – WhozCraig
well '2 ** 100' passt nicht in eine lange lange, wenn eine lange lange 64 Bits ist wahrscheinlich. –
'long long' ist unwahrscheinlich, 100 Bits zu haben. –