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
| Palabra | Qué significa | Ejemplo |
|---|---|---|
| Código de carácter | el número que representa una letra o un signo | 78 para la N |
| Unicode | una sola lista de códigos para las letras de todos los idiomas | |
| Píxel | un punto de color de una imagen | |
| Profundidad de color | cuántos bits usa cada píxel | |
| Frecuencia de muestreo | cuántas veces por segundo se mide un sonido | |
| Profundidad de bits | cuá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
cd ~/archSe 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
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 ñ
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
echo Hola > hola.txtSe 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
od -t u1 hola.txtSe 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
wc -c hola.txtSe 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
| Imagen | Píxeles | Bits por píxel | Bits | Bytes |
|---|---|---|---|---|
| 4 por 2, blanco y negro | 8 | 1 | 8 | 1 |
| 200 por 100, 256 colores | 20.000 | 8 | 160.000 | 20.000 |
| 1920 por 1080, color real | 2.073.600 | 24 | 49.766.400 | 6.220.800 |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Escribe una imagen de ocho píxeles
printf 'P1\n4 2\n1 1 0 0\n0 0 1 1\n' > mini.pbmSe 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
file mini.pbmSe 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
cat mini.pbmSe 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
| Paso | Cuenta | Resultado |
|---|---|---|
| Muestras por segundo | 48.000 | 48.000 |
| Bits por segundo, 16 bits, estéreo | 48.000 × 16 × 2 | 1.536.000 |
| Bits en 30 segundos | 1.536.000 × 30 | 46.080.000 |
| Bytes | 46.080.000 ÷ 8 | 5.760.000 |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Deja la cuenta a Python
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.