Zitat von
BenjaminH:
Nunja,
shl(x:=x shl 1;//x wird verdoppelt) bzw.
shr(x:=x shr 1;//x wird halbiert) machen das, aber ich glaube das meinst du nicht.
Du könntest solange von der Zahl 1 abziehen, bis das Ergebnis mal zwei kleiner oder gleich der Ausgangszahl ist:
Delphi-Quellcode:
function DividebySubtraction(n:Integer);
Begin
Result:=n;
while (Result+Result)>n
do
Dec(Result);
End;
[Edit]Habs in ne Funktion gepackt
Aber was für einen Sinn soll das haben?
Danke!
Der Algorithmus ist gut.
Zum Sinn:
Ich wollte die Multiplikation von zwei natürlichen Zahlen nur mit Addition und Subtraktion durchführen, da diese maschinentechnisch gesehen leichter zu verstehen sind; ganz im Gegensatz zur Multiplikation und Division. Mein
Algorithmus zur Multiplikation benötigt aber an zwei Stellen die Division durch 2 und ich wusste nicht, wie ich die
umsetzen kann; jetzt weiß ich es. Danke.
Edit: Wie funktioniert dieses shr denn? Irgendwie über Verschiebung?
Edit2: Achja, ich muss Binär ja nur die erste Stelle weglasse...
Edit3: Achwas, ich bin bescheuert, vergesst Edit2 bitte.