¿Alguna vez te preguntaste como tu computadora reconoce un patrón de números para convertirlo en un emoji?
Recordemos que las computadoras almacenan y leen patrones de 1s y 0s. Esto es todo, ahora ¿como le hacen para representar textos o imágenes o incluso números?
Representación de Textos
Los textos se representan por medio de la codificación de caracteres que es un método que permite convertir un carácter(como una letra) en un símbolo de otro sistema de representación. En este caso se convierten los caracteres en secuencias de 1s o 0s. Por ejemplo, la letra A se representa por 0011 y la letra B por 1100.
Ahora, en teoría esto se puede hacer libremente y cada fabricante de computadoras puede asignar a estos patrones una letra distinta y entonces ¿como sería posible la comunicación? Para esto existen los estándares y los códigos.
Códigos
- ASCII: Diseñado en Estados Unidos en 1969, utilizaba patrones de 7 bits, sin embargo, no contaban con el impresionante número de caracteres en alfabetos no ingleses.
- ISO: Instituto de estándares internacional que desarrollo una extensión de 8 bits del ASCII.
- UNICODE: Utiliza patrones de 16 bits, este es el que estandariza los emojis (cada emoji tiene su representación en patrones de bits que los fabricantes de computadoras respetan)
Gracias a estos códigos es que si tu envías un emoji a un amigo este recibe ve el mismo emoji que tú aun si tienen teléfonos de compañías rivales.
Números
Los números se representan utilizando código binario, que es un sistema numérico de base dos, el nuestro es de base de 10. Esto quiere decir que por cada «lugar» que se ocupe a la derecha se multiplica por dos y no por 10. En este artículo se explica muy bien.
https://es.wikipedia.org/wiki/Sistema_binario
Imágenes
Finalmente, las imágenes se representan mediante «mapas de bits» o «vectores». El primero es asignar a cada pixel un color distinto representado por una combinación de 3 colores: Rojo, Verde y Azul (RGB por sus nombres en inglés). A cada uno de estos colores se le asigna un valor de 0 a 255. Usando sistema binario se necesitan 8 posibles valores de 1s o 0s para representar valores de 0 a 255 por lo tanto se requieren 8×3=24 bits para dictar el color de un pixel.
Como los pixeles se leen de arriba hacia abajo y de izquierda a derecha, si tenemos que el pixel de la esquina superior izquierda es totalmente rojo y de ningún otro color, los primeros 21 bits que verá el código será: 11111111 00000000 00000000
Compresión de Datos
Almacenar o transferir datos a menudo demanda el reducir el tamaño de estos conservando la información subyacente.
Las técnicas de compresión son bastante ingeniosas, por ejemplo ¿que hacer cuando los 1s o los 0s se repiten muchas veces? almacenas esa información, es decir: hay 100 0s luego 20 1s y así sucesivamente. Luego a la hora de «descomprimir» lo transfieres a su estado original siguiendo la misma regla.
También, si quieres comprimir un texto, puedes poner referencias a un diccionario, así ya no almacenas una palabra, si no donde se ubica en un diccionario, mucho más fácil y con menos consumo de bits.
Así mismo, para otros formatos como el sonido, en específico el mp3 se aprovechan las limitaciones del oído humano y solo se almacena lo relevante para el oído.