Escriba una X mayúscula en un documento en blanco. Aparece de inmediato en la pantalla. Reconoce una letra, quizá el principio de una palabra. Sin embargo, el teclado no ha enviado un diminuto dibujo de la X a través del ordenador. Entre su dedo y la pantalla, una actividad eléctrica se ha convertido en información, esa información se ha interpretado y el ordenador ha recibido instrucciones para dibujar algo que usted reconoce.
En nuestro artículo anterior, «Cómo funcionan los ordenadores: el empleado de archivo ultrarrápido de Feynman», utilizamos el modelo de Richard Feynman de un empleado que sigue instrucciones y lee valores de cajones numerados. Con él explicamos cómo un ordenador puede realizar tareas complejas mediante una sucesión de operaciones sencillas. Ahora vamos a observar con más detalle qué contienen esos cajones y cómo aprovecha la máquina electrónica su contenido. La respuesta empieza con dos símbolos: 0 y 1.
Un interruptor puede guardar un bit
Piense en un interruptor de la luz. Para nuestro ejemplo tiene dos posiciones: apagado y encendido. Podríamos darles cualquier nombre, pero 0 y 1 resultan prácticos. Elegir entre dos posibilidades equivale a un bit, abreviatura de binary digit, es decir, dígito binario. Un bit permite distinguir dos estados, pero por sí solo no puede decirnos el nombre de una persona ni describir una fotografía.
Dentro de un ordenador, unos componentes electrónicos diminutos actúan como interruptores. Al combinar muchos de esos interruptores de dos estados, el ordenador puede representar mucho más que «encendido» o «apagado».
Cuatro bits permiten contar
Imagine cuatro interruptores colocados uno al lado del otro. Asígneles los valores 8, 4, 2 y 1, de izquierda a derecha. Cuando un interruptor está encendido, su valor cuenta; cuando está apagado, no aporta nada. Colóquelos en 0 1 0 1: apagado, encendido, apagado, encendido. El segundo vale 4 y el cuarto vale 1. Juntos suman 4 + 1 = 5.
Pruebe otra combinación. El patrón 0111 representa el 7 y 1111 representa el 15. Esto es el sistema binario: una forma de escribir números utilizando solo 0 y 1. Sigue una idea parecida a la del sistema decimal que conocemos, pero el valor de cada posición se duplica al avanzar hacia la izquierda en lugar de multiplicarse por diez.
Cada bit tiene dos estados posibles, 0 o 1. Por eso, cuatro bits dan lugar a 2 × 2 × 2 × 2 = 16 patrones distintos. Ocho bits, que suelen agruparse en un byte, permiten 256. Con más bits podemos representar números mayores sin exigir que los componentes electrónicos reconozcan estados adicionales. Contar es solo la primera utilidad de estos patrones.
Un número puede representar una letra
Volvamos a la X de la pantalla. Si queremos almacenar una letra, necesitamos una regla que relacione un número con ella. Una antigua norma para representar texto, llamada ASCII, ofrece un ejemplo sencillo: asigna el número 88 a la X mayúscula.
En binario, 88 puede escribirse como 01011000. El cero inicial solo sirve para completar en ocho posiciones el código ASCII, que es de siete bits. Los unos ocupan las posiciones que valen 64, 16 y 8, cuya suma da 88. Si un programa interpreta esos bits como un número, el valor es ochenta y ocho. Si los interpreta según ASCII, representan el carácter X.
Los mismos bits, interpretados según ASCII.
Nada en ese patrón se parece a la forma de una X. La relación surge de la regla acordada para interpretarlo.
Los ordenadores modernos necesitan representar muchos más caracteres de los que abarca ASCII, entre ellos escrituras de todo el mundo y símbolos como los emojis. Por eso utilizan estándares más amplios, sobre todo Unicode, y distintas formas de codificar caracteres en bytes. Los detalles varían, pero el principio se mantiene: los valores almacenados adquieren significado a través de convenciones. Una palabra es una secuencia de caracteres representados de esta manera. Un programa puede guardar y leer, por orden, los códigos de B, O y X sin necesitar un componente especial para la palabra BOX.
El mismo principio sirve para el color. Una forma habitual de describir un píxel de la pantalla consiste en utilizar tres números que indican las cantidades de luz roja, verde y azul. En un ejemplo corriente de ocho bits por canal, (255, 0, 0) representa el rojo: el componente rojo está en su valor máximo, mientras que el verde y el azul están a cero. Con otra convención, el mismo conjunto de números tendría otra interpretación. Así, el texto y las imágenes pueden almacenarse mediante los mismos mecanismos electrónicos básicos sin ser el mismo tipo de información.
Ya tenemos una idea de lo que podría encontrar el empleado de archivo en un cajón: un valor cuyo significado depende de cómo indique la tarea actual que debe interpretarse. Pero guardar un valor no equivale todavía a hacer algo con él. Para eso, el ordenador necesita instrucciones.
Cómo hacen el trabajo los circuitos
La memoria guarda la información que necesita un programa mientras se ejecuta, como los cajones del modelo de Feynman. La unidad central de procesamiento, o CPU, ejecuta instrucciones, realiza operaciones aritméticas, compara valores y ayuda a decidir qué ocurre a continuación. En los ordenadores modernos, el trabajo se reparte entre muchos circuitos electrónicos, pero sigue siendo útil pensar en tres pasos: recuperar un valor, operar con él y registrar el resultado.
Un ordenador puede sumar números en binario. Por ejemplo, 0101 representa el 5 y 0001 representa el 1. Si los sumamos, el resultado es 0110, es decir, 6.
Las instrucciones también se representan con ceros y unos. Algunos bits indican al procesador qué acción debe realizar; otros identifican los valores que debe utilizar o dónde encontrarlos, por ejemplo, en un registro (un pequeño espacio de almacenamiento dentro del procesador). Damos nombres cortos a estas acciones: MOVE copia un valor, ADD suma números, COMPARE compara valores y JUMP lleva al procesador a otra instrucción. CALL inicia otro conjunto de instrucciones y RETURN devuelve después el control al punto correspondiente. Siguiendo estas instrucciones, a veces repitiendo pasos o cambiando de rumbo, el procesador ejecuta un programa.
Aquí se encuentran el software y el hardware: las instrucciones dan trabajo a los circuitos electrónicos.
Recuerde al empleado de archivo de Feynman: sigue instrucciones para encontrar el cajón numerado correcto, trabajar con su contenido y, a veces, saltar a otro paso en lugar de continuar con el siguiente. El procesador sigue esa misma idea básica y ejecuta un programa mediante una secuencia de operaciones sencillas.
Este ejemplo deja fuera muchos detalles de ingeniería, como la organización del espacio de trabajo interno de los procesadores y la coordinación de sus numerosas operaciones. No necesitamos esos detalles para comprender la relación fundamental. El ordenador almacena representaciones, sigue instrucciones que determinan qué hacer con ellas y registra nuevas representaciones como resultados.
Cómo aparece la letra X en la pantalla
Ya podemos seguir el recorrido de la letra desde el principio. Cuando pulsa una tecla, el hardware del teclado comunica una entrada al dispositivo. El sistema operativo y la aplicación la interpretan teniendo en cuenta, entre otras cosas, la distribución del teclado y las teclas modificadoras. Determinan qué carácter quería escribir y pueden guardar una representación de él en el documento.
Cuando llega el momento de mostrar el texto, la aplicación necesita algo más que el código numérico del carácter. También necesita saber qué aspecto debe tener la letra. Esa es una de las funciones de una fuente tipográfica. El software que dibuja el texto utiliza la fuente elegida para calcular la forma y la posición del carácter, y después qué píxeles de la pantalla deben mostrar cada color. La pantalla emite la luz que forma la X que vemos.
Si cambia la fuente, la X puede tener un aspecto muy distinto. El carácter no ha cambiado; lo que ha cambiado es la información y las instrucciones utilizadas para dibujarlo. Del mismo modo, el número 88 no aparecerá como una X solo porque esos bits estén almacenados en algún lugar. Un programa debe elegir interpretarlos como texto y organizar su presentación en pantalla.
Así se distinguen varias funciones que es fácil confundir. Los estados eléctricos permiten al ordenador almacenar y manipular patrones de forma fiable. Una codificación le dice al programa qué representa un patrón. Las instrucciones determinan cómo usarlo. Por último, la pantalla convierte el resultado en algo visible. La letra del documento es el resultado de todo ese proceso.
Las imágenes y el sonido siguen la misma idea
En una fotografía, el punto de partida es la luz, no la pulsación de una tecla. El sensor de la cámara mide la luz que llega a muchas zonas pequeñas y el dispositivo convierte esas medidas en valores digitales. Por ejemplo, una parte más oscura de la escena puede registrarse con un número menor, y otra más iluminada, con uno mayor. El software de procesamiento de imágenes utiliza esos valores para construir la imagen. El archivo también puede comprimir la información para ocupar menos espacio; al mostrar la fotografía, el programa interpreta el formato y proporciona a la pantalla los datos de píxeles necesarios.
El sonido ofrece otro ejemplo. Un micrófono responde a los cambios de presión del aire y los circuitos electrónicos convierten las mediciones de esa señal cambiante en muestras digitales. En una forma habitual de grabar sonido, los valores cercanos a cero representan pequeños cambios de presión, mientras que los valores más alejados de cero, positivos o negativos, representan cambios mayores. Los sonidos más suaves suelen producir oscilaciones menores; los más fuertes, oscilaciones mayores. El software puede almacenar, editar o transmitir esas muestras. Un altavoz al otro extremo convierte las señales eléctricas en nuevas vibraciones del aire. Las ondas sonoras originales no se han doblado para guardarlas en la memoria. Se ha representado y procesado la información que las describe, y después se ha utilizado para producir sonido otra vez.
Cómo se convierte el sonido en números
Medidas de la presión del aire a lo largo del tiempo
Tiempo →
Estos ejemplos implican medidas, convenciones y equipos distintos. Pero todos dependen de una misma capacidad fundamental: la máquina puede representar información mediante patrones, operar con ellos según unas instrucciones y utilizar dispositivos físicos para producir un resultado. Así podemos conectar los circuitos de dos estados de un chip con los textos, las fotografías y la música de la vida cotidiana.
Cuando las cosas salen mal
Los ejemplos que hemos visto son deliberadamente sencillos. Las aplicaciones reales deben interpretar archivos complejos, manejar información inesperada y tomar numerosas decisiones. Para mostrar una fotografía, por ejemplo, una aplicación tiene que comprender el contenido del archivo antes de convertirlo en una imagen. Un error puede producir un resultado incorrecto o hacer que la aplicación se bloquee. A veces un programa intenta acceder a una zona de memoria que no tiene permiso para usar, y el hardware y el sistema operativo pueden detectar y detener ese acceso. Pero no todos los errores activan esa protección. Una aplicación puede usar indebidamente memoria a la que sí tiene acceso o simplemente tomar una decisión equivocada y seguir funcionando sin ninguna advertencia evidente.
Algunos errores pueden tener consecuencias más graves que un bloqueo. Una aplicación puede dar resultados incorrectos, perder información u omitir una comprobación que debería haber impedido una acción. Recuerde al empleado de archivo de Feynman: puede seguir una instrucción perfectamente, pero si esa instrucción apunta al cajón equivocado, el resultado también puede ser erróneo. El procesador ejecuta instrucciones sin saber si consiguen lo que el programador pretendía. Cuando una aplicación procesa mal información procedente del exterior, esos errores pueden influir a veces en sus decisiones o acciones de formas imprevistas y llegar a crear problemas de seguridad.
En artículos posteriores exploraremos cómo surgen estos fallos y cómo trabajan los ingenieros para prevenirlos o limitar sus consecuencias.
En resumen
Un bit registra una de dos posibilidades: 0 o 1. Con varios bits, un ordenador puede representar números. Según las reglas acordadas para interpretarlos, esos números pueden representar caracteres, colores o mediciones del sonido. Un procesador sigue instrucciones para operar con la información almacenada, mientras que los dispositivos de entrada y salida conectan el sistema electrónico con el mundo que nos rodea.
Piense una vez más en la X que aparece en su documento. Su identidad procede de un código de carácter; su aspecto, de la fuente y del software que la dibuja; la luz que la hace visible, de la pantalla. Todos esos pasos dependen de la capacidad de representar y manipular información de forma fiable. Comprender esta cadena resulta más útil que imaginar que un ordenador contiene palabras e imágenes en miniatura.

