Ne peux-t-on pas se contenter de :

struct
{
unsigned bit:1;
signed entier:4;
};

Sinon :
Pourquoi un int? Autant utiliser un signed char pour l'entier (donc 1+1...