http://en.wikipedia.org/wiki/Bit_field -- BE WARNED. C bitfields might give you access to bits, but they're still aligned to the boundary of your system (DWORD boundary on x86 for example)
e.g.:
struct a {
unsigned a: 13;
unsigned b: 12;
};
sizeof(struct a) => 4;
in gcc they've got a flag to force structs to their actual bit size: