А что битовые поля уже использовать не модно?
struct my_str{ unsigned z :4; unsigned a :1; unsigned b :1; } stat;
stat.z=5; stat.a=stat.b=1;
Правда если речь идет о служебных регистрах, которые в иклюде определенны не как битовые поля,то придется либо пользоваться макросами либо научиться пользоваться сдвигами, и, или, и считать биты
|