[C] riesige Datentypen

Hallo, wie kann ich in C einen Typ definieren der z.b. eine Zahl von 500 ziffern aufnehman kann und diese z.b. auch noch mit eienr anderen multiplizieren.

Also sozusagen ein riesiges Integer,
wichtig ist Geschwindigkeit und Speichereffizienz.

MfG Bruno

Hallo Bruno

Hallo, wie kann ich in C einen Typ
definieren der z.b. eine Zahl von 500
ziffern aufnehman kann und diese z.b.
auch noch mit eienr anderen
multiplizieren.

Also mit 2048-Bit kommst du auf 616 Dezimal-Ziffern, wenn ein Integer ist. Du musst nun einfach ein Array aus C-Datentypen definieren, welches diese 2048 Bits aufnehmen kann. Am besten nimmst du dazu den typ short (16 Bit), das ergibt dann 128 Stück und evtl noch 1 Bit fürs Vorzeichen.
Die Rechnerei geht dann auf die gleiche Art und Weise wie du das ganze mit Bleistift und Papier machst.
Den short-Typ solltest du verwenden, da C bei den Berechnungen keinen Übertrag berücksichtigt, wenn du aber die Berechnungen mit dem long-Typ machst hast du den Übertrag in den oberen 16 Bits.

Also sozusagen ein riesiges Integer,
wichtig ist Geschwindigkeit und
Speichereffizienz.

Die Speichereffizienz ist nicht das grosse Problem, wohl aber die Geschwindigkeit. Bei der Multiplikation sind das 128*128=16’384 16-Bit Multiplikationen (mit einem 32-Bit Produkt) und 32’768 16-Bit Additionen.

Ich kann dir ja mal ein Beispiel mailen wenn du interresse hast.

MfG Peter(TOO)

Ich kann dir ja mal ein Beispiel mailen
wenn du interresse hast.

Sicher, go ahead: [email protected]

MfG
Bruno Haller