das AND ist zum ausmaskieren der unwerwünschten Bits
Andere Idee:
Versuch mal mit casten
t = (uint32)(1<<i);


EDIT: Denke, du hast in etwa recht. Versuch das Casten wirklich mal