¿Cómo saben las computadoras cómo interpretar BITS?

Las computadoras no saben interpretar bits. Saber es algo que solo los seres vivos pueden hacer.

Las computadoras son máquinas y las máquinas no piensan y no saben. Todo lo que pueden hacer es para lo que fueron creados. Las computadoras han sido construidas para ser programadas. Ni siquiera entienden el programa. Simplemente llevan a cabo una secuencia de operaciones que coinciden con cargar una instrucción en un registro y luego continúan una secuencia de operaciones que podemos ver como la ejecución de esa instrucción. Pero es completamente mecánico. No hay nada sobre ese número en particular que se cargó que diga que es una instrucción, es solo una secuencia de entradas y salidas. Puede que ni siquiera sean datos binarios. Los bits individuales pueden indicar qué tipo de flores le gustan a alguien. Incluso si sabe que un grupo particular de bits es un número, no sabrá cuál es el número hasta que sepa qué representación se está utilizando.

El único momento en que una representación se fuerza en un grupo de bits es cuando se muestran a un ser vivo. Es entonces cuando averigua si 101010 es el número 42 (codificación del complemento a dos) o el carácter “*” (codificación ASCII o Unicode UTF-8) o -86 (codificación de 128 en exceso) o casi cualquier otra cosa.

Hay una historia sobre radioastronomía que está relacionada. El telescopio estaba escaneando el cielo y la fuerza de la señal se imprimía en un teletipo. Debido a que todos los números eran de un solo dígito, y estos eran los primeros días de las computadoras, por lo que hacer más trabajo del estrictamente necesario era un dolor, el programador no se molestó en decodificar el número por completo. Simplemente le agregaron el código de caracteres para ‘0’ y lo imprimieron como un carácter. En la computadora que usaban, los caracteres 0123456789 estaban todos juntos para que pudieras hacer eso. Durante un tiempo, el teletipo de impresión fragmentada 1 1 2 3 2 1 2 y así sucesivamente. Y luego, de repente, imprimió 6 EQUJ 5 y volvió a los dígitos pequeños de nuevo. El telescopio acababa de recibir una señal masiva de algún tipo. Si el programador no hubiera sido tan vago, la teleimpresora habría impreso 6 14 26 30 19 5, que es lo que representan esas letras, pero la computadora fue programada para imprimir el número como un solo carácter y eso es lo que hizo. (Nadie descubrió cuál era la señal y nunca se repitió, pero si traza esos números en un gráfico, forman una curva de campana ordenada que indica que, sea lo que sea, el telescopio debe haber escaneado más allá de él, no era Interferencia basada en la Tierra. Se conoce como la señal Wow !, porque eso es lo que escribió el astonómero en la impresión)

¡Guauu! señal – Wikipedia

Las computadoras son solo máquinas, y las máquinas funcionan con una serie de entradas. Imagine una máquina cortando una forma de un pedazo de madera. Puedes decirle algunas cosas básicas: cortar o no cortar y moverte. También puede apuntar el cabezal de corte en una dirección diferente y decirle qué tan lejos debe moverse en esa dirección.

Con una máquina de este tipo, podría cortar cualquier forma, pero eso es un poco repetitivo. Imagine que puede grabar una serie de instrucciones para que alguien más las siga. Puede ser solo la configuración que deben seguir, por ejemplo, mueva el cortador hacia arriba, baje el cortador, gírelo 90 grados y corte 6 pulgadas. gire 8 grados y corte por 10 pulgadas. Etc. Tendrás una lista bastante larga.

Imagínese si esa lista fuera números, y esos números representaran bits, que pueden ser 0 o 1, por ejemplo.

00000000 significa elevar el cortador.

10000000 significa bajar el cortador. Un 1 al inicio siempre significa bajar el cortador. Entonces supongamos que los 0 después del 1 le dicen en qué ángulo debe estar el cabezal de corte.

0xxxxxxx donde las x son bits le dice a la máquina qué tan lejos cortar si la cabeza ya está hacia abajo (y ya sabemos que una distancia de 0 significa que se levantó el cortador).

Ahora tenemos un lenguaje, cada conjunto de bits tiene un significado específico, y cada uno tiene un byte de longitud (8 bits).

En lugar de un conjunto complejo de instrucciones que son difíciles de interpretar, podemos reducirlo a una serie de pasos, por ejemplo,

00000000 – Inicialice y asegúrese de que la cuchilla esté levantada.

10001000 – Baje el cortador a un ángulo de 1000 (16 unidades) – 45 grados.

01101010 – Corte 106 unidades en la dirección del ángulo de 45 grados.

10001110 – Cambiar el ángulo a 42 grados.

00011110 – Cit 30 unidades en la dirección del ángulo 42 grados.

y así sucesivamente … Esto, entonces, se convierte en un “Programa”: así es como las computadoras usan bits para comprender lo que hacen a continuación, básicamente leen cada instrucción, una a la vez, y hacen lo que les indica, según el patrón de bits dentro de la instrucción. Un solo bit, para una computadora, puede significar que es una instrucción aritmética, o para reducir un contador. De esta manera, la computadora es solo una máquina que procesa el programa que tiene que operar.

Con solo la información proporcionada, la computadora (o más correctamente el programa de computadora) no lo sabría. La respuesta está en el contexto. Si los tres bytes fueran leídos de un archivo .wav, probablemente interpretaría los datos como información de sonido. En realidad, al leer un archivo .wav, el programa conocería el formato del archivo y conocería el contexto de cada byte de datos. Algunos serían información de encabezado, y la mayoría sería información sólida.

El programa de computadora conocería (o asumiría) el formato de los datos entrantes en función de sugerencias como:

  • Aviso proporcionado previamente al usuario. Si se les pide que escriban su nombre, es probable que lo hayan ingresado. La entrada del usuario generalmente se valida para la precisión si es importante. Si le pide al usuario que ingrese un número, podría ingresar todas las letras. Eso no sería válido.
  • Extensión de archivo. Los archivos .mp4, .wav, .txt, .xml, etc. Todos indican al programa cuál debe ser el formato del archivo. De nuevo, esto debería ser validado.
  • Tipo de datos en el programa o encabezado de función si el código se llama desde un código externo. La documentación del programa debe indicar el tipo de datos y el propósito.

La computadora espera instrucciones y datos sobre los cuales aplicar esas instrucciones. No interpretan ni las instrucciones ni los datos.

Además, cada tipo de computadora está construida para interpretar bits de su propia manera única, así como a los humanos de diferentes partes del mundo se les enseña a interpretar los sonidos del lenguaje de manera diferente. Entonces, si ingresa los mismos tres bytes en tres tipos diferentes de computadoras, podrían interpretarlo de manera diferente o no hacerlo, de la misma manera que los humanos de diferentes culturas interpretarían la misma oración de manera diferente o no.

Por ejemplo, se podría construir una computadora para recibir entradas en grupos de tres bytes, donde el primer byte sería una instrucción y el segundo y tercer bytes serían datos para aplicar la instrucción. Lo siguiente podría, por ejemplo, ser una interpretación del primer byte de cada triplete:

  • 0000 0000 -> dejar en paz
  • 0000 0001 -> voltear el segundo y tercer bytes
  • 0000 0010 -> O el segundo y tercer bytes, deja el resultado en el primer byte

0000 0001 1010 1010 0000 1111 produciría

0000 1111 1010 1010 como segundo y tercer bytes

mientras

0110 1010 0000 0000 1111 1111 puede dejarlo confundido

a menos que no se le haya dicho cómo interpretar el primer byte 0110 1010

En resumen, las computadoras siguen instrucciones que le indican cómo manipular los datos que se le proporcionan. No interpretan los comandos ni los datos, ni tienen un código universal que sigan; cada uno está construido para interpretar los datos dados de manera particular.

Ellos no. Las entradas siempre están en contexto. Si la entrada proviene de un teclado, los bytes representan un carácter de eso. Un disco, entonces los bytes representan algo del disco. Inicialmente, esta sería información del sector utilizada para encontrar archivos y directorios. Lo que contiene el archivo se basa en la convención. por ejemplo, Microsoft usa la extensión de nombre de archivo (por ejemplo, .exe, .doc, etc.), otros sistemas operativos pueden codificar el tipo de archivo como los primeros bytes del archivo, etc.