Zitat von
qwertz543221:
Wie könnte ich denn die division darstellen, vlt schriftlich??, ohne durchprobieren zu müssen?
na "fast" genauso, wie du es schriftlich auch machst
z.B.
456789 div 123
Zitat:
erstmal den Divisor auf die Stellenanzahl des Dividenden bringen
und gleichzeitig die Stellen zu merken
also
456789
123000
=3 verschobeneStellen
den Quotient mit 0 initialisieren
Schleife:
* * dann so oft wie möglich den neuen Divisor vom Dividend abziehen
* * * * (ohne mit dem Dividend in den negativen Bereich zu kommen)
* * * * parallel dazu das den Quotient um 10^verschobeneStellen erhöhen (dazuaddieren)
* * nun Dividend durch 10 (eine Stelle wieder entfernen)
* * verschobeneStellen minus 1
wenn verschobeneStellen größer 0, dann wiederhole die Schleife
Wenn die Zahlen noch Vorzeichen haben, dann diese am Anfang entferen
und wenn beide Zahlen unterschiedliche Vorzeichen hatten, dann das Ergebnis negieren.
Aber für "aufwändigere" cryptografische Dinge ist soeine Lib dann nicht unbedingt gut geeignet,
da sie halt "recht" langsam arbeitet.
Wenn du dir mal die andere Lib vom Dipl. Ernst Winter ansiehst, dann arbeitet diese bei jedem internem Rechenschritt 6 Dezimalstellen gleichzeitig ab und hier ist es jeweils nur Eine.
Bei meiner Lib sind es noch ein paar mehr, da ich direkt binär rechne und jedes Bit ausnutze
(siehe
TBigInt)
Wenn du wirklich stark in Richtung Cryptography arbeiten willst, dann empfehle ich dir das
DEC, denn diese Lib ist speziell für soetwas entwickelt wurden.
Was soeine
String-Lib aber aus macht:
- sie ist sehr gut zu debuggen und vorallem von "Laien" dürfte verstanden werden, was da intern abläuft
- nja und die Zahlenlänge ist nahezu unbegrenzt ... eine "normale"
Win32-Anwendung bekommt man locker eine Zahl mit einer Milliade Stellen
(ok, die verbraucht dann zwar auch fast 1 GB an Arbeitsspeicher, aber es paßt rein)