(I know this doesn't answer your question, but it does address an untrue assumption in your question and it is too long to leave as a comment.)
Actually, the C standard does not define the size of a byte.
The only thing that is assured is that char
will be able to hold one character.
In the past, bytes have ranged between 5 and 9 bits, depending upon the CPU.
It is true that most of that wildness has settled down and most systems in place do use an 8-bit byte.
// What the C standard says must be true:
sizeof char <= sizeof int <= sizeof long
This is why many pre-c99 (and c99) systems included the extremely useful typedefs of:
int8
uint8
int16
uint16
int32
uint32