char shouldn't be 16-bits, because if that's what you need, there's often wchar just for that purpose. If we could turn back time, it would've been nice to have byte defined as an official type, and char could be whatever your platform prefers -- Unicode, ASCII, etc.
Although, if we're time-traveling, just dump int, short, long, etc., and start with int8_t, uint8_t, and so on, instead. The size and endianness ambiguity of C is one of its biggest flaws WRT portability, in my not-so-expert opinion. Having intrinsic and reliable ways to solve those two issues would've been really nice to have from day one.