Darstellung extrem großer Zahlen in Pascal

B

barf

Hi,

Ich würd gerne mal wissen, wie man Zahlen ausgeben kann, die die von Integer, Longint etc festgelegten Grenzen überschreiten. Bei mathematischen Programmen ist das nämlich immer wieder die Schranke, die es mir nicht ermöglicht, nach meinen Vorstellungen weiter zu arbeiten.

Ich hab schon Programme gesehen, die sehr große Zahlen darstellen konnten; z.B. die Fibonacci Reihe bis zur 4778sten Zahl (rund 1000 Stellen). Dabei wurden die Zahlen anscheinend normal berechnet und dann als Strings gespeichert bzw ausgegeben, allerdings hab ich keine Ahnung wie das geht.

Also wenn ihr Tipps habt, immer her damit.

mfg
 
In modernen Pascaldialekten gibt es den Datentyp Int64, also einen 64-Bit-Integer. Das ist allerdings auch das Maximum; kein normaler Compiler unterstützt größere Zahlen. Ein Double hat 52 oder 53 Bit Genauigkeit, wenn ich mich recht erinnere; das heißt, der Int64 ist genauer als ein Double (wenngleich er natürlich nicht so große Zahlen darstellen kann). Die FPU verwendet intern 80 Bit Genauigkeit, allerdings ist auch das nicht wirklich eine große Zahl zu nennen.

Wenn du noch größere Zahlen darstellen willst (was ja beispielsweise in der Kryptologie unabdingbar ist), so musst du dir entweder den Code dazu selber schreiben oder eine Library benutzen. Ich persönlich habe noch nie zu diesem Thema eine Library gesucht, deswegen kann ich dir auch keine nennen. Ich denke, es wäre u.U. besser, wenn du dir den Code selber schreibst, da dies einen weit größeren Lerneffekt hätte.

Ein Ansatz beim Programmieren der Arithmetik großer Zahlen wäre, dass du mehrere "normale" Datentypen aneinander hängst. So erhältst du z.B. eine 256-Bit-Zahl durch das Verketten von 8 32-Bit-Integern. Die Arithmetik dazu müsstest du nun selber schreiben -- da kannst du dir ja mal ein paar Gedanken zu machen.

Gawayn
 
Zuletzt bearbeitet:
Für extrem große Zahlen verwendet man gerne so genannte BIGNUMS.

Hier werden die Ziffern in enorm großen Strukturen wie Arrays oder Strings verwaltet und die entsprechenden mathematischen Funktionen speziell implementiert.

Google doch mal nach BIGNUMS, vielleicht findest Du dort etwas.

Z.b.: http://wombat.doc.ic.ac.uk/foldoc/foldoc.cgi?bignum

vop
 
Zurück