Los bit-fields adyacentes pueden empaquetarse juntos, aunque es una característica que depende de cada compilador. En tu ejemplo, signo y num se han empaquetado en el espacio de un solo unsigned int, y es por eso que sizeof(numero) devuelve 4 y no 8.
En
Código C:
Ver originalstruct Byte_1
{
unsigned char signo : 1;
unsigned char num : 7;
};
signo y num pueden empaquetarse en un mismo Byte (unsigned char).
Y en
Código C:
Ver originalstruct Byte_2
{
unsigned short signo : 1;
unsigned short num : 7;
};
signo y num pueden empaquetarse en dos Bytes (unsigned short).