Na, der Effekt is klar:
Der nächste Shift setzt das Vorzeichen von einem 16-Bit-Wort.
Da es aber 32-Bit sein sollen, kopiert er das Bit in alle andern darüber.
Raus kommt eben 0xfff800 = 4294934528
Eben wir bei einem
int32_variable = int16_variable.
Ich hätt ja den Printf im Verdacht, der kann es machmal.
Versuch mal
printf("%u \n", (t & (1<<i));
sieht blöd aus, könnt aber helfen
Lesezeichen