Forum: Mikrocontroller und Digitale Elektronik Hochzahlen in IAR Embedded Workbench


von iar_idiot2010 (Gast)


Lesenswert?

Hallo Freunde, ich habe ein Problem:

Ich schreibe mir gerade einen Algorithmus zur Umrechnung von Floats in 
IEEE754 und hänge nun in einer Schleife, wo eine falsche Berechnung 
rauskommt:

vorkomma |= (0x01 * (2 ^ potenz));

Die Potenz ist anfangs '0', das heisst, dass das erste Bit (da (0x01 * 
2^0) = 0x01) zu '1' gesetzt werden sollte...passiert aber nicht. Die 
Potenzrechnung funktioniert nicht. Er macht mir an dieser Stelle 0x01*2, 
beim nächsten 0x01*3...er addiert sie also.

Ist meine Schreibweise falsch, oder fehlt mir ein #include oder 
ähbliches?

Vielen Dank!

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Du solltest deine Programmiersprache vor der Benutzung besser erst
einmal lernen.

^ ist in C der Operator für "xor", nicht für "Potenzieren".  Letzteren
gibt es einfach nicht.  (Es gibt die Funktion pow(), aber die arbeitet
mit Gleitkommazahlen, nicht mit Ganzzahlen.)

p.s.: 0x01 ist in diesem Zusammenhang eine sehr umständlich geschrie-
bene Darstellung der Zahl 1, die in dieser Form und an dieser Stelle
die Lesbarkeit und Verständlichkeit kaum fördert.  Einen Ausdruck mit
1 zu multiplizieren ergibt schließlich nur wiederum den Ausdruck
selbst.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.