Для работы с отдельными битами переменной есть битовые поля (bitfield), но ИМХО ими пользоваться не удобно, а в Вашем случае - не получится, т.к. их нельзя объединять в массивы. Я бы сделал так:
unsigned int status;
unsigned int status_temp; uncigned char i;
for (i = 0, status_temp = status; i < 16; i ++, status_temp >>= 1) { if (status_temp & 1) { ....... } else { ....... } }
while (i==17) { if(status.i==0){бла-бла} else {бла-бла} i++; }