я обычно делал так:
Код
typedef union Type____{
unsigned char ch;
struct{
unsigned char b0:1;
unsigned char b1:1;
unsigned char b2:1;
unsigned char b3:1;
unsigned char b4:1;
unsigned char b5:1;
unsigned char b6:1;
unsigned char b7:1;
};
}my_type;
.........
my_type a;
unsigned char c;
.........
a.b0 = 1;
a.b4 = 0;
...........
a.ch = c;
...........
И никаких преобразований, засоряющих код!