Eso no lo puedes hacer, las uniones es una determinada memoria reservada y luego le asignas a cada variable distintos bits:
union {
char a;
struct {
char b1:1;
char b2:1;
char b3:1;
char b4:1;
char b5:1;
char b6:1;
char b7:1;
char b8:1;
};
}
en este caso estas declarando una variable de 8bits y esa variable la estas dividiendo en bits (b1, b2....). Pero no puedes coger un bit de distintas variables y ordenarlos en una misma memoria.
Te recomiendo que te leas un buen documento que explique el uso de las "union", es un poco complicado al principio, pero luego veras que es muy simple.
De todas formas lo que tu quieres hacer NO SE PUDE hacer asi.