¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Texto, imágenes y sonido convertidos en bits

Después de esta lección: Puedo explicar cómo el texto, una imagen y un sonido se convierten en bits.

Lección de 50 min10 comandosLaboratorio de compiladores y arquitectura: gcc, flex, bison y RISC-V en una VM

Por qué un audio pesa más

Un mensaje de WhatsApp ocupa unos cientos de bytes. Una foto del móvil, unos cuantos millones. Medio minuto de música guardada sin comprimir ocupa casi seis millones.

Los tres son solo bits. En esta lección ves cómo cada uno se convierte en bits y cómo se calcula lo que ocupa.

Al terminar esta lección

Nota

Puedo explicar cómo el texto, una imagen y un sonido se convierten en bits.

Palabras clave

PalabraQué significaEjemplo
Código de carácterel número que representa una letra o un signo78 para la N
Unicodeuna sola lista de códigos para las letras de todos los idiomas
Píxelun punto de color de una imagen
Profundidad de colorcuántos bits usa cada píxel
Frecuencia de muestreocuántas veces por segundo se mide un sonido
Profundidad de bitscuántos bits usa cada medida del sonido

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Antes de empezar

Nota

Pulsa Iniciar el laboratorio en la barra superior y espera a que la máquina diga que está en marcha. Cada botón Ejecutar escribe su comando en el terminal de la máquina, uno detrás de otro.

Cada carácter tiene un número

Un ordenador guarda una letra como su código de carácter. En la lista más antigua, la N es 78 y la n es 110. El espacio es 32. El final de una línea también es un carácter, el número 10.

Unicode da un código a cada letra de cada idioma, y también a los emojis. La ñ es el 241. Los 128 primeros códigos ocupan un byte cada uno; la ñ ya no cabe en uno solo.

Entra en la carpeta arch

Comando
cd ~/arch

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Pide a Python tres códigos

Comando
python3 -c "print(ord('N'), ord('n'), chr(241))"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Cuenta los bytes de la ñ

Comando
python3 -c "print(len(chr(241).encode()))"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Guarda la palabra Hola en un archivo

Comando
echo Hola > hola.txt

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Enseña cada byte como un número

Comando
od -t u1 hola.txt

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Cuenta los bytes del archivo

Comando
wc -c hola.txt

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Una imagen es una cuadrícula de píxeles

Una imagen se guarda como una cuadrícula de píxeles. El ancho por el alto da el número de píxeles. Eso es la resolución.

Cada píxel es un número para su color. Con una profundidad de color de 1 bit, el píxel es blanco o negro. Con 8 bits hay 256 colores. Los móviles usan 24 bits, unos 16,7 millones de colores.

Ejemplo resuelto: lo que ocupa una imagen

ImagenPíxelesBits por píxelBitsBytes
4 por 2, blanco y negro8181
200 por 100, 256 colores20.0008160.00020.000
1920 por 1080, color real2.073.6002449.766.4006.220.800

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Escribe una imagen de ocho píxeles

Comando
printf 'P1\n4 2\n1 1 0 0\n0 0 1 1\n' > mini.pbm

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Pregunta qué tipo de archivo es

Comando
file mini.pbm

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Lee la imagen como texto

Comando
cat mini.pbm

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Un sonido se mide muchas veces por segundo

Un micrófono convierte el sonido en una onda. El ordenador mide la onda muchas veces por segundo. Cada medida es una muestra.

La frecuencia de muestreo es cuántas muestras hay por segundo. La profundidad de bits es cuántos bits usa cada muestra. Los bits son frecuencia × profundidad × canales × segundos. El estéreo tiene dos canales.

Ejemplo resuelto: medio minuto de música

PasoCuentaResultado
Muestras por segundo48.00048.000
Bits por segundo, 16 bits, estéreo48.000 × 16 × 21.536.000
Bits en 30 segundos1.536.000 × 3046.080.000
Bytes46.080.000 ÷ 85.760.000

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Deja la cuenta a Python

Comando
python3 -c "print(48000 * 16 * 2 * 30 // 8)"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Un error frecuente

Advertencia

Mucha gente termina la cuenta y da el resultado en bytes. La cuenta da bits. Divide entre 8 para tener bytes, y después entre 1.000 para kilobytes o entre 1.000.000 para megabytes.

Para ir más lejos: más que los píxeles

mini.pbm tiene ocho píxeles, que son ocho bits, un solo byte. Pulsa Abrir el terminal, escribe wc -c mini.pbm y mira lo que ocupa de verdad.

¿De dónde salen los bytes de más? Mira otra vez cat mini.pbm y cuenta cada carácter, finales de línea incluidos.

Sobre este laboratorio y su código: Laboratorio de compiladores y arquitectura: gcc, flex, bison y RISC-V en una VM

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.