Hallo,
muss gerade viel mit Bitverschiebungen arbeiten und habe hier ein Riesenproblem:

Hier mal der Code des ganzen

Code:
uint32_t i=0;
uint32_t t;
  
for(i=0; i<20; i++)
{
  t = 1<<i;
}
Ansich nichts kompliziertes, is auch nur ein Beispiel für mein Problem.

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:

Code:
1
2
4
8
16
32
64
128
256
512
1024
2048
4096
8192
16384
-->4294934528
Wie sich der aufmerksame Leser vielleicht vorstellen kann stimmt der letzte Wert nicht.
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