128Bit Ganzzahl emulieren
-
Hallo
Ich versuche gerade, unter C eine Ganzzahl zu emulieren die mindestens 128 Bit haben soll und dementsprechend große Zahlen aufnehmen kann. Wie könnte ich diese unter C definieren, bzw. wie müsste man Rechenoperationen dafür implementieren (Add,Sub,Mul,Div,Mod)?
Ist es evtl. möglich, mehrere Longs hintereinanander zu legen und dann dennoch mit Werten der anderen Long-Teile zu rechnen??
Für alle Anregugen wär ich super dankbar!
MfG, Henni
-
in C99 gibt es long long, was aber nur 64Bit idr. entspricht.
128Bit kannst du aber mit GNU MP emulieren
-
Ok, aber das ist Compiler abhängig. Wäre es nicht möglich, in einer Struktur mehrere Long-Variablen hintereinander zu legen und dann diese als einen großen zusammenhängenden Speicherbereich zu behandeln. So könnte man evtl. eine mehrere KB große Zahl (128Bit und mehr) emulieren. Leider weis ich net wie man dann grundlegende Rechenoperationne dafür implementieren müsste.
-
GNU MP ist AFAIK in ISO C geschrieben und sollte mit jedem Compiler laufen. Es gibt eben nebenbei noch Assembler Optimierung, wenn du eine CPU benutzt, die unterstützt wird.
Ansonsten stehen in der GNU MP Doku auch die verwendeten Algorithmen, wenn du selber so etwas schreiben willst http://www.swox.com/gmp/manual/Algorithms.html#Algorithms