Computers store numbers internally in binary for efficiency reasons. When it displays a number to you it converts it to a string of (possibly ASCII) character values that are sent to the console where they are interpreted as character codes. When you enter a number you are just entering decimal characters which need to be translated into the actual internal numeric value, something like this:
Code:
int read_int() {
int c;
while (isspace(c = getchar()) ;
int n = 0;
while (isdigit(c = getchar())
n = n * 10 + (c - '0'); // subtract ascii code for character '0' to get value of digits from '0' to '9'
return n;
}
So the "ascii" form is characters that represent numbers whereas the binary form is the actual bit patterns of the internal number format stored in the file.