Secuencias binarias

En esta página, aprenderás más sobre cómo se representa la información dentro de la computadora como secuencias de bits.

En muchos lenguajes de programación existe la convención de que cada cadena de texto termina con un nulo byte, en el que los ocho bits son cero, un código que está reservado para este propósito. Así que nuestro "Bienvenido..." En realidad, la cadena podría ocupar 52 bytes.

Hasta ahora hemos estado trabajando con pequeños trozos de datos, desde valores booleanos (un bit) hasta caracteres (ocho bits). Pero, por supuesto, cierta información en su computadora o teléfono inteligente es mucho más grande que eso. Para empezar, los personajes generalmente no se usan de uno en uno; se utilizan en cadenas de texto como "Bienvenido a la belleza y la alegría de la informática." Estos 52 caracteres ocupan 52 bytes de memoria del ordenador. Pero los verdaderos usuarios campeones del espacio son los archivos multimedia: imágenes, sonidos (principalmente música) y video.

Si pudiéramos ver dentro de los bits de la memoria, una sección de la memoria podría verse algo como esto:

01010101011011100110000100100000011011010110000101101110011001010010000001110011011001010110110001100101001000000110100101110011001000000110111001101111011100000110100101101110011001110011001000010000001100110011000010111000001110100011011110111010000100000011000110110111101101101011100000111010101110100011001010111001000101100001000000110011001100001011011100

Una secuencia binaria (binary sequence) (también se denomina bitstream) es una cadena de unos y ceros.

Eso muestra solo 228 bits. Un teléfono celular de 16 GB tiene 16 gigabytes (aproximadamente 16 mil millones de bytes) de almacenamiento con cada byte que contiene 8 bits. Eso es 128,000,000,000 bits. Impreso en papel como unos y ceros, la memoria del teléfono de 16 GB tomaría casi 40,000,000 de páginas. La información almacenada, ya sea un mensaje de texto, una fotografía, una canción, un programa de computadora o una lista de números de teléfono, se ve igual, como una secuencia de bits que están activados o desactivados (uno o cero), una secuencia binaria.

¿Cuánta información cabe en un gigabyte?

Aquí hay algunos ejemplos aproximados de qué tipo de datos cabrían en la cantidad de memoria:

nombre cantidad ejemplo
bit ya sea un 1 o un 0 1
byte 8 bits 11011001
kilobyte 210 (1,024) bytes un par de párrafos
megabyte 220 (1,048,576) bytes approximadamente 1 libro
gigabyte 230 (1,073,741,824) bytes un poco más de 1 CD
terabyte 240 (1,099,511,627,776) bytes alrededor de 1.500 CDs
petabyte 250 (1,125,899,906,842,624) bytes cerca de 20 millones de archivadores de texto
exabyte 260 (1,152,921,504,606,846,976) bytes alrededor del 20% de todas las palabras pronunciadas por la humanidad a lo largo del tiempo

Mientras escribimos esto en 2017, es común tener una unidad de disco de terabytes en tu escritorio. Los servicios web tratan con petabytes o exabytes de datos.

¿De dónde vienen estos prefijos como "tera-" y "peta-"?

Cuando escribimos números grandes, ponemos comas cada tres dígitos (contando desde la derecha). Cada grupo de tres tiene un nombre: mil, millones, mil millones, etc. Entonces, el número 1,234,567,890 se pronuncia "mil millones, 234 millones, 567 mil, 890". Esos nombres de grupo ("mil" y así sucesivamente) también tienen nombres de prefijo utilizados en las mediciones métricas:

(Nota: se incluye entre paréntesis "()" el nombre de la cantidad de acuerdo con el sistema numérico largo, más común en el español de América Latina y España.)

prefijo cantidad cantidad como numeral
kilo- mil 1,000
mega- millón 1,000,000
giga- mil millones / millardo 1,000,000,000
tera- trillón
(billón)
1,000,000,000,000
peta- quatrillon
(mil billones)
1,000,000,000,000,000
exa- quintillón
(trillón)
1,000,000,000,000,000,000

Los dígitos para agrupaciones menores de uno (fracciones) también tienen prefijos métricos:

prefijo cantidad cantidad como fracción
milli- milésimo 1/1,000
micro- millonésima 1/1,000,000
nano- milmillonésima 1/1,000,000,000
pico- trillonésimo
(billonésima)
1/1,000,000,000,000
femto- cuatrillonésima
(milbillonésima)
1/1,000,000,000,000,000
atto- quintillonésima
(trillonésima)
1/1,000,000,000,000,000,000
Los nombres fraccionarios se utilizan para medir tiempos en la computadora, como un tiempo de acceso a la memoria de nanosegundos, o distancias entre cables en un chip, que se miden en nanómetros.
DAT-1.A.6

"Secuencia binaria" es una categoría muy amplia, y a menudo, varias capas de abstracción se construyen sobre ella. Por ejemplo, puede incluir una imagen en un correo electrónico o mensaje de texto, en cuyo caso, el mensaje incluye una imagen, que es una especie de archivo, que es una especie de secuencia binaria.

  1. Haz clic para cargar un proyecto nuevo. Entonces guárdalo.

    Echa un vistazo a estos 3 bloques personalizados que usarás para explorar secuencias binarias:

    • Un reportero que acepta una cadena de texto como entrada y traduce ese texto en una secuencia binaria:
      traduce texto () a secuencia binaria
    • Un reportero que acepta una secuencia binaria como entrada y la traduce en texto:
      traduce secuencia binaria () a texto
    • Puede utilizar la segunda y tercera entradas para controlar dónde el bloque rompe la secuencia para iniciar una nueva línea y también qué tan grande se dibuja la imagen.
      Un bloque de comandos que acepta una secuencia binaria como entrada y dibuja una imagen en blanco y negro en el escenario donde cada 0 en la secuencia se convierte en un "píxel" blanco y cada 1 se convierte en un "píxel" negro".
      traduce la secuencia binaria () a una imagen en blanco y negro que tenga () pixeles de ancho y en una escala de factor ()

  2. Traduce una cadena de texto corta en una secuencia binaria.
      Las citas le dicen a Snap! que la secuencia binaria debe guardarse "tal cual". Sin algún texto al principio, Snap! pensará que tu secuencia binaria es un número, eliminando cualquier cero en la parte delantera, lo que cambiaría la interpretación de dónde comienza y termina cada byte.
    • Encuentra la instrucción fijar a (salida) el valor... y cambiar el texto de entrada a una cadena de texto corta de su elección. La secuencia binaria notificada se almacenará en la variable salida entrecomillada.
      asignar (salida) el valor (traducir texto (Beauty and Joy of Computing)  secuencia binaria)
    • Accede a la salida haciendo clic con el botón derecho (o haciendo clic con el control) en el observador SALIDA en el escenario y eligiendo "exportar..." La secuencia binaria se descargará como un archivo de texto. Copia la secuencia binaria del archivo, pero no las comillas.
      Imagen de un visualizador de salida en el escenario que almacena una secuencia binaria con el menú desplegable abierto y la opción 'exportar...' seleccionada
  3. Incluso Snap! tiene errores. Al pegar estos datos en Snap!, puede extenderse más allá de los bordes de la caja. Los desarrolladores están trabajando para solucionar esto.
    Imagen de la salida pegada en un bloque y extendiéndose más allá de los bordes del bloque
  4. Pega la secuencia binaria de salida en el bloque traducir secuencia binaria a texto y ejecútalo. (Puede que tarde un poco en reportar).
    • ¿Reporta tu texto original? (De lo contrario, es posible que hayas incluido las comillas o perdido uno o dos bits mientras copiabas).
    • Una vez que hayas obtenido tu texto original para informar, intente hacer algunos cambios.
      • ¿Qué pasa si cambias un bit?
      • ¿Qué sucede si agregas un bit en algún lugar en el medio de la secuencia?
      • ¿Qué pasa si añades un bit al principio?
  5. DAT-1.A
  6. Vuelve al archivo de la salida exportada.txt y copia de nuevo la secuencia binaria original (sin las comillas). Pégalo en el bloque traducir secuencia binaria a imagen en blanco y negro y ejecuta el bloque. Es probable que no veas nada significativo. ¿Por qué no?
  7. Prueba esta secuencia binaria en traducir secuencia binaria a imagen en blanco y negro con la segunda entrada establecida en 14 píxeles de ancho:

    00000110000000000001000110000000010000000000001100100110000011111111000001100111100000010010110011000111001111100000100110110000000001000000000000110000000000111000000011000100011000010000000100000110000110000000111111000000

    Deberías ver algo como el logotipo de BJC:
    logo de Beauty and Joy of Computing logo: una 'b,' una 'j,' y una 'c' que parecen dos ojos y una nariz con una sonrisa debajo
  8. DAT-1.A
  9. ¿Qué obtienes si traduces esa misma secuencia binaria en texto? ¿Por qué?
DAT-1.A.8, DAT-1.A.9, DAT-1.A.10

Los datos analógicos (analog) tienen valores que cambian sin problemas, a diferencia de los datos digitales que cambian en intervalos discretos.

Muestreo (sampling) significa medir valores, llamados muestras, de una señal analógica a intervalos regulares.

La frecuencia de muestreo (sampling rate) es el número de muestras medidas por segundo.

No todos los datos son naturalmente digitales. (Es decir, pueden no ser valores individuales que se puedan representar en forma de secuencias binarias). Algunos valores del mundo real (como el tono y el volumen de la música, los colores de una pintura o la posición de un velocista durante una carrera) cambian suavemente con el tiempo o la posición; son analógico. Cuando los datos analógicos se codifican digitalmente (como bits en una computadora), sus valores se aproximan. Este es un ejemplo de abstracción. La presión de aire que cambia continuamente de un sonido, por ejemplo, semuestrea (se mide) miles de veces por segundo, y las muestras se almacenan como bits.

Más ejemplos, por favor.
Un texto es un número finito de caracteres, cada uno de los cuales proviene de un alfabeto finito. Por lo tanto, un libro sin imágenes es naturalmente digital. Cuando se escribe una pieza musical, hay un número finito de notas posibles, por lo que hay un "alfabeto" finito de símbolos como ♫ o 𝄢, y la pieza musical usa solo un numero finito de ellos. Por lo tanto, la partitura, la notación escrita de la música, es naturalmente digital. Pero el sonido real de las palabras al ser leidas o de a música al ser interpretada incluye mucha más información (como la forma en que alguien pronuncia las palabras, su acento o la forma en que suena cada instrumento). Por lo tanto, el habla y la interpretación musical no son naturalmente digitales.

Entonces, si las imágenes, la música y las palabras se ven iguales en la memoria, todas ellas secuencias binarias, ¿cómo puede saber la computadora lo que es realmente cualquier pedazo de memoria? Por ejemplo, ¿debería interpretarse la secuencia 01000001 como el número 65, la letra A, un tono de rojo bastante oscuro o algo más?

DAT-1.A.7

El significado de una secuencia de bits depende del contexto en el que se utilice. ¿Qué queremos decir exactamente con "contexto"? ¿Cómo sabe un lenguaje de programación si interpretar una secuencia de bits como un entero, una imagen, una cadena de caracteres, una instrucción o algo más? Siempre hay otra secuencia de bits en algún lugar que codifica el tipo de dato de la secuencia de bits.

AAP-1.A.3 first sentence

Pero los diferentes lenguajes usan los tipos de datos de manera diferente. En lenguajes de alto nivel, ese código de tipo de datos se adjunta al valor en sí. En los idiomas de nivel inferior, cuando se crea una variable, hay que decir qué tipo de valor contendrá, y el tipo de datos se adjunta a la variable, por lo que no puedes obtener respuestas exactas cuando los valores son enteros y también ser capaz de manejar valores no enteros de la misma variable. Así que en lugar de ver
variables de programa (foo)
ves cosas como
entero (foo)

AAP-1.A.4

Snap! tiene fortalezas que muchos lenguajes de programación no tienen, y es muy probable que en tu próxima clase de informática del año usen alguno de esos otros idiomas. Si ese es el caso, tendrás que asegurarte que el tipo de datos que declares para una variable coincida con lo que vas a poner en ella.

  1. Esta pregunta es similar a las que verás en el examen AP CSP.
    Una empresa minorista en línea en particular utiliza secuencias binarias de 9 bits para identificar cada producto único para la venta. Con la esperanza de aumentar el número de productos que vende, la compañía planea cambiar a secuencias binarias de 10 bits. ¿Cuál de las siguientes afirmaciones describe mejor la consecuencia de usar secuencias de 10 bits en lugar de secuencias de 9 bits?
    Dos productos más se pueden identificar de forma única.
    Diez productos más se pueden identificar de forma única.
    El doble de productos se pueden identificar de forma única.
    Diez veces más productos se pueden identificar de forma única.
  1. Mira dentro de los reporteros traducir texto a secuencia binaria y traducir secuencia binaria a texto. Describe cómo funcionan estos dos reporteros. Hay varios bloques personalizados en el interior:
    • paquete de bytes de 8 bits toma una secuencia binaria de 8 bits o menos y agrega suficientes ceros al frente para hacer un byte completo. ¿Cómo se usa esto?
    • traducir texto a la lista Unicode toma una cadena de texto y genera una lista del valor Unicode de cada carácter. ¿Por qué es útil una salida de lista aquí?