struct {
char x;
struct {
char a : 4;
union {
char b : 2;
char c : 2;
};
char d : 2
};
};

こうやるとabcdは正常なんですがxの値がおかしくなります
xの最初4ビットがa
xの最後2ビットがd
xの残り2ビットがbとcで共有
どうやればできますか?