Asignando un valor al campo de bits con longitud 1

Supongamos que tengo

struct A
{
    signed char a:1;
    unsigned char b:1;
};

Si tengo

A two, three;
two.a = 2; two.b = 2;
three.a = 3; three.b = 3;

two contendrá0s en sus campos, mientrasthree contendrá1s. Entonces, esto me hace pensar que asignar un número a un campo de un solo bit obtiene el bit menos significativo (2 es10 en binario y3 es11).

Entonces, mi pregunta es: ¿es esto correcto y multiplataforma? O depende de la máquina, del compilador, etc. ¿El estándar dice algo acerca de esto o está completamente definido por la implementación?

Nota: El mismo resultado se puede lograr asignando0 y1, en lugar de2 y3 respectivamente. solía2 y3 solo para ilustrar mi pregunta, no la usaría en una situación del mundo real

PD Y sí, estoy interesada en ambas ...C yC++, por favor no me digas que son idiomas diferentes, porque yo sé esto :)

Respuestas a la pregunta(1)

Su respuesta a la pregunta