![]() |
Re: Rechnen mit Strings bzw Sehr großen Zahlen
Zitat:
Und ja, es ist wesentlich effizienter mit Array of Cardinal statt Strings zu rechnen. Der Durchfluß der Basis Operationen sollte sich dadurch mindestens verzehnfachen. Es bleibt aber ein ganz kleines Problem: um mit array of Cardinal rechnen zu können muß man einige wichtige Funktionen in Assembler schreiben. JEDE 32 Bit Operation wie ADD, SUB, CMP, MUL und DIV kann auf Intel Systemen verkettet programmiert werden. Zb. wird bei einer Addition einfach sequentiell vom Low zu High Byte per ADC addiert. Ein Dezimaler String würde in einem Cardinal ca. 9 Stellen speichern, man wird also in einer Basisoperation in einem Cardinal Array mehr als 9 Dezimale Operationen durchführen. Statt also 9 mal ADD/ADC würde man mit einem ADD/ADC das gleiche erzielen. Sogesehen, gibt es keine plausible und logische Begründung NICHT mit array of byte oder array of Cardinal zu arbeiten, statt mit Strings. Ok, einzigste Ausnahme ist das der Coder das bischen Assembler nicht beherrscht. Gruß Hagen |
Re: Rechnen mit Strings bzw Sehr großen Zahlen
@gmarts,
in deinem ZIP finde ich keine Quelltexte sondern nur die DCU. Aus dieser Sicht sind deine "praktischen" Funktionen leider sehr unpraktisch, denn das einzigste was sinnvoll ist wäre aus deinem Source lernen zu können. Wenn es um Performance geht, oder um die Anzahl an nützlichen Features, oder Bedienbarkeit, dann gibt es eben viel bessere und praktische Source und Librarys im Netz. Gruß Hagen |
Re: Rechnen mit Strings bzw Sehr großen Zahlen
Zitat:
255 -> 8 Bit sind doch Pi über Daumen 2,5 Stellen!?! Zitat:
|
Re: Rechnen mit Strings bzw Sehr großen Zahlen
~ 2,5 Stellen wenn man auf ein Byte rechnet, aber warum sollte man auf einer 32 Bit CPU sich auf 8 Bit Berechnungen konzentieren. Also, Cardinal = 32 Bit ist das Gebot der Stunde, und in einem Cardinal bekommst du 9 dezimale Stellen rein. Ok, 9.7 / 4 ~ 2.5, sogesehen haste Recht und ich mich verrechnet ;)
Gruß Hagen |
Re: Rechnen mit Strings bzw Sehr großen Zahlen
Zitat:
Tjoa..assemblieren kann ich leider noch nicht. :) |
Re: Rechnen mit Strings bzw Sehr großen Zahlen
Es ist aber auch nicht allzu schwer. Was du benötigst sind 6 wichtige Algorithmen in Assembler.
1. Routine die 3 Cardinal Arrays mit identischer Größe Additiert, also R[] = A[] + B[] 2. Routine die 3 Cardinal Arrays mit identischer Größe Subtrahiert, also R[] = A[] - B[] 3. Routine die 1 Cardinal mit einem Cardinal Array multipliziert, also R[] = A[] * C 4. Routine die 1 Cardinal mit einem Cardinal Array dividiert und modulo rechnet, R[] = A[] / C, M = A[] mod C 5. Routine die ein Carry = Überlauf addiert also R[] = R[] + C 6. Routine die ein Borrow = Unterlauf subrahiert also R[] = R[] - C Alle weiteren Operationen können nun immer auf obige 6 Algos. zurückgeführt werden. Gruß Hagen |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:41 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz