Zahlen in Delphi

Chronix

Erfahrenes Mitglied
Ich arbeite gerade an einem Programm zur Verschlüsselung von Texten.
In diesem Zusammenhang will ich sehr große Zahlen (ca.1000 Stellen) miteinander verrechnen (miteinander multiplizieren, dividieren oder wenn`s nicht anders geht, addieren oder subtrahieren). Dabei muss die Zahl aber später als String aus Dezimalzahlen wiedergegeben werden können!
 
-

Das ist sehr schön, dass du dir diese Aufgabe vorgenommen hast, aber hast du auch eine Frage?


Gruß Patrick
 
Ich gehe einfach mal davon aus, dass hier Bedarf nach einer Bignum-Library besteht. Solche Fragen sind hier schon öfters aufgetaucht, also einfach mal die entsprechenden Beiträge suchen!

Gawayn
 
Meine Frage ist, wie ich so lange Zahlen einsetzen kann...
Real und Integer-Zahlen haben einen zu kleinen Berreich
 
Wie ich in meinem vorherigen Post schrieb, benötigst du hierfür eine sog. Bignum-Library. Ich kann dir allerdings keine empfehlen, da ich gerade an meiner eigenen arbeite und mich mit anderen nicht beschäftige. Du kannst natürlich auch eine eigene schreiben. Es ist nicht schwer, wenn du dir einige Gedanken darüber machst, wie Arithmetik eigentlich abläuft.

Gawayn
 
Cardinal, bzw int64

Zur Verschlüsselung wirst du über kurz oder lang mit 32 bzw 64 bit Zahlentypen nicht auskommen. Trozdem ein kleiner hinweis ;-)

Cardinal ist unsigned 32 bit Typs, also ohne Vorzeichen, was dir dann die volle [0, 2^32-1] gibt. Die funktionieren ganz gut, und es geht so einiges damit.
Schwieriger wird es mit den schon erwähnten BigNum Datentyp. der ist signed mit 64 bit, also von [-2^32, 2^32-1] sind alles Ganzzahlen vertreten. Einziger Nachteil ist, das so einige standarts noch nicht implementiert sind. FOR-Schleifen gehen z.B. nicht..
Du kannst ja für Hochzahlen die Euerische Zahl nehmen...
 
Zuletzt bearbeitet:
Schwieriger wird es mit den schon erwähnten BigNum Datentyp. der ist signed mit 64 bit
Das ist falsch, es existiert kein Datentyp namens BigNum. 64 Bit hat der Int64, der intern zusammengesetzt ist aus zwei Int32. Der Int64 wird auf den heutigen Standardprozessoren, deren Wort 32 Bit breit ist, nicht per Hardware unterstützt, sondern muss emuliert werden -- allerdings ist es nur eine unangenehme Eigenschaft des Delphi-Compilers, dass der Int64 in For-Schleifen nicht eingesetzt werden kann. Anderen Compilern ist das egal. Als Bignum bezeichnet man riesige Zahlen, beispielsweise mit 1024 Bit, 2048 Bit oder anderen Größen. Solche Zahlen meinte ich, und die braucht man in der Kryptologie. Eine 64-Bit-Zahl ist keine "big number" -- wenngleich sie natürlich auch nicht klein ist.

Gawayn
 
Könnte ich dazu vielleicht auch Loonginteger nehmen?
Die Scheinen mir hierfür geeignet, da die ja praktisch unendlich lang sein können (auch wenn es dan sehr lange dauern kann...)?
 
Ich kenne keinen Datentyp in Pascal/Delphi, der beliebig große Zahlen aufnehmen kann. Longint ist in Pascal ein signed 32-Bit-Integer. Mehr weiß ich dazu nicht.

Gawayn
 

Neue Beiträge

Zurück