Hallo,
muss gerade viel mit Bitverschiebungen arbeiten und habe hier ein Riesenproblem:
Hier mal der Code des ganzen
Ansich nichts kompliziertes, is auch nur ein Beispiel für mein Problem.Code:uint32_t i=0; uint32_t t; for(i=0; i<20; i++) { t = 1<<i; }
Wenn ich das ganze nun mit dem GCC von WinAvr kompiliere (keine Warnings, Fehler, ect) kann ich im Debugfenster von AVR Studio folgende Werte ablesen:
Wie sich der aufmerksame Leser vielleicht vorstellen kann stimmt der letzte Wert nicht.Code:1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 -->4294934528
Eine Bitverschiebung um 1 nach links sollte doch gleich wirken wie eine multiplikation mit 2.
Zig mal mit Taschenrechner, und PC-C Programmen probiert, da klappts immer.
Die Frage ist nun:
Hat der Compiler einen Fehler?
Stimmt etwas in den Headerdateien nicht (hab eigentlich nachgeschaut)
Habe ich eine Fehler im Code?
Muss ich um mit uint32_t Typen zu arbeiten ein besonderes Compilerflag setzen?
Ich bitte um Antwort!
lg MoFe







Zitieren

Lesezeichen