У вас есть пара возможностей. Можно было бы просто использовать Boolean math для получения битов:
int bit0 = 1;
int bit1 = 2;
int bit2 = 4;
int bit3 = 8;
int bit4 = 16;
int bit5 = 32;
int bit6 = 64;
int bit7 = 128;
if (status & bit1)
// whatever...
Другим является использование битовых полей:
struct bits {
unsigned bit0 : 1;
unsigned bit1 : 1;
unsigned bit2 : 1;
// ...
};
typedef union {
unsigned char status;
struct bits bits;
} status_byte;
some_status_byte.status = whatever;
if (status_byte.bits.bit2)
// whatever...
Первое (по крайней мере, возможно) более портативное , но когда вы имеете дело со битами состояния, возможно, что код даже не переносится в любом случае, поэтому вам может быть не так много ...