Esta entrada va dedicada a esa gran mayoría que usa ordenadores, teléfonos inteligentes y otras maravillas y no ha recibido un curso de electrónica. Todo el mundo sabe que la capacidad de almacenar información se mide en bytes. Así, una tarjeta de memoria para el móvil o la cámara puede tener 16 Gigabytes, o sea, dieciséis mil millones de bytes. ¿Y qué es un byte?. Un byte son ocho bits, con lo que lo que voy a intentar explicar qué es un bit y cómo se usa para almacenar información. Allá vamos.
Para escribir un texto en español usamos 27 letras, además de números y signos. En otros sistemas, como el chino y el coreano, tienen un número diferente de símbolos. ¿Cuál sería el número mínimo de símbolos que podemos usar para almacenar un texto?. Por ejemplo, la vida se las ingenia para almacenar la información en un código genético de 4 letras (ACGT) . ¿Existe un código que permita almacenar información con menos letras? La respuesta es si: el llamado código binario usa únicamente dos letras, o bits, que son el "0" y "1".
¿Cómo se "escribe" un texto en binario?. Por ejemplo, en binario el texto "¿Cuánto son 2+2?" quedaría así:
101111110100001101110101 11100001011001000111010001101111001000000111001101101111011001000010000000110010001010110011001000111111
Pero, ¿cómo hemos llegado de un texto normal a esta lista de ceros y unos?. Hay que hacerlo en dos etapas. Primera: hay que convertir el texto "¿cuánto son 2+2?" en una lista de números. Para ello, se usa el llamado código ASCII, "American Standard Code of Information Interexchange", que asigna a cada letra, número, y símbolo, un número entre el 0 y el 255. Para que os hagáis una idea, muestro aquí un trozo de la tabla de conversión.
Así, con esta tabla podemos convertir el texto de 16 símbolos
"¿Cuánto son 2+2?" (contando espacios) en números entre el 0 y el 255:
191 67 117 225 110 116 111 32 115 111 110 32 50 43 50 63
¿ c u á n t o _ s o n _ 2 + 2 ?En la segunda etapa, convertimos los números del "sistema decimal" del código ASCII ( "191", "67", "225", ...) a números binarios. Esto funciona así. En decimal, tenemos 10 dígitos, del 0 al 9. Si queremos expresar un número mayor que 9, tenemos que usar 2 dígitos. Y si queremos expresar un número mayor que 999, 3 dígitos, etcétera.
En binario, hay dos bits, "0" y "1". Si queremos expresar un número mayor que 1, tenemos que usar dos "bits" .
DECIMAL BINARIO
0 0
1 1
2 10
3 11
Si queremos ir más allá de (0,1,2,3), o sea, más allá de 4 posibilidades, tenemos que usar 3 "bits" y para seguir, 4 "bits", etcétera:
DECIMAL BINARIO
4 100
5 101
6 110
7 111
8 1000
9 1001
10 1010
11 1011
12 1100
11 1011
12 1100
13 1101
14 1110
15 1111
16 10000
16 10000
O sea, que para contar del 0 al 7, que son 8 números, hacen falta 3 bits y para contar hasta 15 hacen falta 4 bits, y así sucesivamente.
Ahora podemos ver por qué es especial un byte, o sea, 8 bits. Con 8 bits tenemos 256 combinaciones, es decir 2 elevado a 8, que permiten contar de 0 a 255 . Como ya hemos dicho, el código ASCII tiene exactamente 256 entradas. Es decir, que cada entrada del código ASCII se puede convertir en un número binario de 8 bits, o sea, en un byte. Por tanto, el texto "¿cuánto son 2+2+?" se puede escribir así:
TEXTO ASCII BINARIO
¿ 197 10111111
c 67 01000011
u 117 01110101
á 225 11100001
á 225 11100001
n 110 01100100
t 116 01110100
o 111 01101111
espacio 32 00100000
s 115 01110011
o 111 01101111
n 110 01100100
espacio 32 00100000
2 50 00110010
+ 43 00101011
2 50 00110010
? 63 00111111
Aunque a los humanos el lenguaje binario nos resulte incómodo, para fabricar ordenadores, es muy conveniente. Para almacenar información usando el código binario, podemos usar cualquier cosa que tenga dos estados posibles. Por ejemplo, una bombilla encendida o apagada, nos serviría para tener un bit, y 8 bombillas nos permitirían tener un byte. Dentro de tu ordenador hay, literalmente, miles de millones de interruptores que pueden estar "encendidos" o "apagados" y por tanto cada uno de ellos es un "bit". En su realización física más sencilla, un "bit" es un componente electrónico que está constituido por un único "transistor", el dispositivo semiconductor inventado en 1947 por Bardeen, Brattain y Shockley.
Volvamos al principio. En una tarjeta de memoria de 16 Gbytes, es decir, 16 mil millones de bytes, tenemos 128 mil millones de bits. En el caso de la tarjeta de la figura, este número gigantesco de "bits" tiene que caber en un área de unos 2cm x 2cm. Dos centímetros son igual a 20 millones (20M) de nanometros (nm). Así, una tarjeta tiene unos 20M nm x 20M nm, o sea, 400 billones de nanometros cuadrados. Repartiendo bits por nanometros cuadrados, cada bit dispone de un área de 4000 nanometros cuadrados, que nos da un región cuadrada de 63 nm de lado. Por eso hablamos de nanoelectrónica. Por tanto, los ingenieros y los físicos tienen que ser capaces de hacer bits de ese tamaño, de poner billones de ellos juntos, de diseñar métodos para leer y escribir esos bits, y de hacerlo de manera tan eficiente que puedan vender estas maravillas a 8 euros. La física del estado sólido que hace esto posible tiene mucho que ver con este milagro tecnológico, del que seguiré hablando otro día.