Кейл51, например, произвольно внутри структуры битовые поля тусовал
как ему удобнее. Может и тут то же самое плюс выравнивание до
удобной битности... Вот в таком кейл меня огорчил - он разметил все так чтобы битовые поля умещались в две группы по 16 бит. И при смене версии компилятора на более свежий, который смог сильно ужать код, оно по-иному оказалось.
typedef struct
{
unsigned Year: 7;
unsigned Month: 4;
unsigned Day: 5;
unsigned Hour: 5;
unsigned Minute: 6;
unsigned Second: 5;
} TDateTime;
После всех ковыряний вот так поля разместил чтобы результат оставался одинаковым при всех оптимизациях
typedef struct
{
unsigned Day: 5;
unsigned Month: 4;
unsigned Year: 7;
unsigned Second: 5;
unsigned Minute: 6;
unsigned Hour: 5;
} TDateTime;