Servus, habe ein Problem:
Ich möchte Elemente aus GF(2^m) platzschonend darstellen. Da es sich dabei ja nur um Polynome mit Elementen aus {0,1} handelt, dachte ich mir, ich allokiere einfach Speicher und lege der Reihe nach die einzelnen Koeffizienten als Bits hinein.
Ungesetzt habe ich das so (siehe auch Source-Code):
Ich definiere einen Datentyp, der aus einem Zeiger auf ein array of unsigned char und einem long besteht. Der long-Wert speichert dabei nur die Größe des Array. Dachte nun ich speichere folgendermaßen:
x^2 + x -> 00000110
oder
x^10 + x -> 00000100 00000010
array[1] array[0]
Soweit, so gut.
Jetzt möchte ich aber Daten einspeichern (logisch, sonst machts nicht wirklich Sinn) und müßte daher wissen, wie Zahlen in einem unsigned char abgelegt werden.
Habe das Ganze mit unsigned int statt char gemacht, ist gelaufen, die Addition (einfaches Xor) hat aber nur Müll ergeben.
Mit unsigned char kann ich die Klasse (siehe Source) compilieren (Bloodshed Dev-C++), das Programm stürzt aber ab. Nehme ich die Ausgaberoutine heraus, so stürzt es nicht mehr ab.
Daher die nächste Frage: Was mache ich bei der Verwendung von unsigned char falsch ?? (mit unsigned int statt unsigned char gibt es dieses Problem nicht). Desweiteren stürzt es auch ab, wenn ich einfach Zuweisungen verwende, d.h. wenn ich
verwende.
Vielen Dank,
lg. mindless