Are you familiar with the binary number system? You can represent the values 0-255 by using 8 bits, or 1 byte. 2 bytes, or 16 bits, can represent 0-65535. n bits can represent 0 through (2^n)-1. Numerical types in programming languages are represented in binary form rather than as individual ASCII chars. You COULD use a character string to represent a number, but seeing as all the functions would only accept an actual numerical type, you would have to keep converting back and forth.
For now, lets assume INT reserves 1 byte. If one byte is equal to 1 character, then why can variables declared by type INT store 5 digit numbers? That would be 5 bytes, correct? this isn't making much sense... I read that unsigned INT variables can hold up to 65,000, or somewhere along that.