typedef signed char byte;
typedef unsigned char ubyte;
Oh, no you didn't.
byte is(as of newest standards) required to be at
least 8 bits, but not necessarily.
For precise sizes, see <stdint.h>(which does include int8_t and uint8_t)
Also, some languages(e.g. C#) have "byte" unsigned, and then have "sbyte", which is signed.