¿Cómo pueden las computadoras entender las variables?

No tienen que hacer nada muy especial. La mayor parte de lo que la computadora puede hacer en hardware es leer o escribir valores en algún lugar de la memoria desde y hacia los registros en la CPU, y realizar cálculos matemáticos sobre los valores en los registros.

Todo lo que el compilador está haciendo es decidir que una ubicación dada en la memoria se usará para almacenar los datos de una variable con un nombre particular que usted creó, por lo que, cuando sea necesario, simplemente lee o escribe en la dirección previamente decidida. Para manejar diferentes tipos de variables que no sean ints, todo es solo un truco de software. Las cadenas son solo una serie de direcciones consecutivas donde el software elige tratar cada valor numérico individual como si representara un carácter de texto dado. Los booleanos son solo 0 y 1 para verdadero y falso (aunque diferentes idiomas pueden revertir esto). Los flotadores y los dobles tienen su propia representación acordada (ver IEEE-784), pero todavía se almacena como ints en la memoria. Y todo se acumula a partir de ahí.

Las variables son marcadores de posición, y generalmente tienen un estante de valores posibles asignados a ellas. La función de una variable (dentro y fuera de las computadoras) es preservar la estructura de una ecuación mientras se sustituyen diferentes valores.

Lea un libro básico o wikipage sobre arquitectura de computadoras, luego lea un libro introductorio sobre programación, como SICP