Hallo,
wenn das mit dem 1<<i nicht läuft, hätte ich das so in etwa gelöst:
Code:
unsigned int maske=1; //das 0.Bit setzen
for(...)
{
    if(Alarm_high & maske)
    {
        //Ausgabe der Alarmnummer usw
    }
    maske=maske*2; //links schieben
}
Grüße, Bernhard