Martin Eckel wrote:
> Am 06.11.2011 12:55, schrieb Stefan Reuther:
>> c /= divi;
>
> Da fängts schon an: der DSP, auf dem ich programmiere, kann nicht ohne
> weiteres dividieren (okay, es gibt einen Befehl, konditionale
> Subtraktion, damit kann man durch wiederholte Ausführung das nachbilden).
Dann multiplizierst du eben mit dem Inversen. Der Divisor ist als
10^exp10 berechnet, das Inverse kannst du dann eben als 0.1^exp10
rechnen (da musst du nur mit der Genauigkeit etwas mehr aufpassen).
> Ich denke, ich werde die Zehnerpotenzen als Binärzahlen ablegen und
> nacheinander abziehen.
Bei einem begrenzten Wertebereich ist das sicher sinnvoll. Für Dinge wie
"16-bit-Zahlen formatieren auf einem 8-bitter ohne Division" hab ich das
auch schon so gemacht.
Allerdings schriebst du "der Zahlenbereich ist ziemlich groß". Um alle
Zahlen zwischen 1.0e+300 und 1.0e-300 formatieren zu können, bräuchtest
du dann eine Tabelle mit 600 Zehnerpotenzen, die du absuchen musst. Für
den Aufwand kannst du eine Menge rechnen, da sollten sogar ein paar in
Software realisierte Divisionen drin sein.
Stefan