[C] Bitweises abspeichern von Variablen

harrypitt

Lieutnant
Mitglied seit
03.06.2003
Beiträge
62
Renomée
1
Schreibe gerade ein Program welches die Funktionsweise einer fiktiven 8bit RISC Rechenmaschine visualisiert (gibt also aus, was in den Registern und im Hauptspeicher steht wenn ein bestimmter Maschinencode verarbeitet wird).

Jetzt hab ich das Problem, dass ich eine FPU nachbilden muss, die mit einer kastrierten 8bit IEEE 754 Gleitkommadarstellung arbeitet. Mein Weg dort hin wäre gewesen, dass ich die Operanden mittels Bitoperationen auf ein 32bit Format (float) "aufblase", dann die Operation ausführe (ist eigentlich eh nur eine Addition) und dann mittels Bitoperationen wieder auf das 8bit Format "zusammenschrumpfen" lasse. Jedoch lässt der Compiler keine Bitoperationen mit Operanden im Gleitkommaformat zu...

Lange Rede kurze Frage:
Wie kann ich den binären Inhalt einer float Variable bitweise in eine int Variable schreiben?
 
Etwa so:

typedef union
{
float f;
long l;
char c[4];
} floatToLong_t;

floatToLong_t x;
x.f = 1.123

// Zugriff
long l = x.l;

//alternativ über c[0]...c[3]

Je nach Prozessorarchitektur kann der Output byteweise vertauscht sein (BigEndian/LittleEndian)
 
Zuletzt bearbeitet:
Danke für die Info, Nachtschicht.

Da der Output von der Prozessorarchitektur abhängt, werde ich wohl auch die Rechenoperation mit Binäroperationen nachbauen müssen.
 
Zurück
Oben Unten