"youre getting confused.. a char is not explicitly a byte"
So you really want to argue with the C++ Standard? It clearly states that a "char" must occupy 1 byte. It does not state the amount of bits a byte must represent but it does state the lowest possible number of bits per byte (8). If 8 was made standard, which it isn't, the standard would state something like:
"char, unsigned or signed, shall allocate only 8 bits.".
Sadly, it doesn't which means the number of bits per byte can vary with each system.