¡Feliz 3732!

El sistema de numeración conocido como octal utiliza sólo los números del 0 al 7, constituyendo lo que se conoce como un sistema de base 8. En nuestro mundo estamos acostumbrados a utilizar la numeración de base 10 (es decir, los números del 0 al 9), pero realmente podemos representar números utilizando el número de símbolos que nos apetezca.

Es relativamente sencillo convertir números de decimal a octal pasando por el binario, aprovechando que podemos expresar cualquier número entre 0 y 7 utilizando 3 bits. Así, para convertir un número decimal (por ejemplo… ehhhh… 2010) a octal, debemos escribirlo en binario (011111011010), agruparlo en grupos de 3 bits empezando por la derecha (011 111 011 010) y por último buscar el número decimal representado por cada grupo de 3 bits (en este caso, 011 = 3, 111 = 7, 011 = 3 y 010 = 2). El número que forman sus equivalentes decimales es el número original en sistema octal (es decir, 3732).

El sistema octal es bastante utilizado en informática, y por eso a fecha de hoy sigue teniendo importancia. Lo que yo no sabía hasta hace un momento es que algunos lenguajes, como el de la tribu Yuki, el finés o el estonio mantienen algunas formas de escribir los números que revelan un antiguo uso del sistema octal. Por ejemplo, en finés el nueve se escribe yhdeksän, que al parecer puede ser traducido literalmente como «uno desde diez», y el ocho se escribe kahdeksan, equivalente a «dos desde diez».

Esto seguramente es debido a que los habitantes de estas zonas contaban utilizando los huecos de los dedos (8) en vez de los dedos en sí (10). Dicen los historiadores que otras civilizaciones contaban señalando las falanges de los dedos con el pulgar (12), lo que seguramente explique la importancia de la «docena» todavía en nuestros días…

En fin. Lo que quería en realidad era desearos a todos un feliz 2010. Gracias por seguir ahí, es todo un placer estar en tan buena compañía.

1 Bocabyte = 8 Bocabits

Últimamente nos estamos ocupando de temas más mundanos, y hemos hablado bastante de bits, gigas, tamaños de discos, ficheros, de modo que he pensando (¡sí!) que no estará de más comentar alguna cosilla al respecto.

En informática la medida estándar es el bit. Un bit es la unidad básica de información del código binario (el nombre viene de Binary Digit, dígito binario) y como tal, sólo puede tomar solo dos valores: 0 ó 1. Por ejemplo, en el sistema decimal la unidad básica es el dígito decimal, que puede tomar valores de 0 a 9.

Hay que decir que a esos dos valores que puede tomar un bit los hemos llamado «0» y «1», pero podíamos haberlos llamado «Verdadero» y «Falso», o bien «Torete» y «Vaquilla»… el caso es que como a los informáticos parecen encantarnos los números, vamos a usar lo de 0 y 1, que además tiene muchas ventajas a la hora de operar. A una agrupación de bits la denominamos Byte (B, es mayúscula para diferenciarlo del bit, que es una «b»). Normalmente 1 Byte son 8 bits, por eso en castellano utilizamos la palabra «octeto», aunque esta equivalencia no es fija. Un Byte es la unidad mínima de procesamiento de la información. ¿Por qué 8 y no 10 ó 15? La historia es complicada, pero tenemos que pensar que el Byte representa en el fondo la cantidad de bits necesarios para representar una letra del alfabeto en código binario. Y tengo pruebas. Con ocho bits tenemos 256 posibilidades para formar números, esto quiere decir que podemos establecer una equivalencia entre las letras, números y símbolos que utilizamos y un número binario de 8 bits, como «0011 1010». Seguramente estará pensando que 256 son muchos más de los símbolos que empleamos, pero tenga en cuenta que hay que considerar de forma independiente las letras con y sin acentos, las mayúsculas, las minúsculas, el salto de línea, el retroceso…

Si la informática hubiera sido desarrollada en China, donde manejan, vamos a decir 4 000 signos (quien controle del tema que me corrija, aunque es un ejemplo), hoy en día estaríamos utilizando 12 bits para representar cada letra (2^12 = 4 096), con lo cual el byte equivaldría a 12 bits y no a 8… inquietante ¿no?

A partir del byte, la información se agrupa en múltiplos: 1 Kilobyte (KB) son 1 024 Bytes (luego 1 024 x 8 = 8 192 bits), y por cierto, que no es lo mismo que un Kilobit (Kb), que son 1 024 bits. Luego viene el Megabyte, que son 1 024 Kilobytes. Después el Gigabyte (1 024 MB, 1 073 741 824 Bytes haciendo la conversión). Más allá del «Giga» está el «Terabyte», y después un montón que no se usan nunca…

Como ya he comentado alguna vez, esto lo aprovechan los proveedores de Internet (ISP, Internet Service Provider) para proporcionarnos menos velocidad de la que creemos que hemos contratado… así, nos prometen «20 megas», y se aprovechan de la ambigüedad para proveer un ancho de banda no de 20 Megabytes por segundo (MBps), sino 20 Megabits por segundo (Mbps), fíjese que sutil es la terminología (y que delicados los acrónimos…)

Esto significa que la velocidad que contratamos en la realidad es una octava parte de la que pensábamos que nos ofrecían… los 20 «megas» se quedan en ¡¡2,5 Megabytes por segundo!! que es un «poco» menos de lo que nos han vendido…

La utilidad de todo esto es poder representar una gran cantidad de información en forma de unos y ceros, lo cual ya vimos que tenía muchas ventajas… y el ejemplo del ancho de banda de Internet es una muestra más de por qué es necesario conocer algunos detalles sobre informática en esta sociedad, absolutamente dependiente de unas tecnologías que desconoce.

El binario al rescate

alo.jpgEl binario puede ayudarnos a transmitir datos, realizar operaciones lógicas y hasta a Fernando Alonso a contar sus victorias ahora que ya no le quedan dedos… La solución a tan complicado enigma será revelada, como siempre, al final :-P

¿Ha pensado alguna vez por qué utilizamos diez dígitos? 0, 1, 2, 3, 4, 5, 6, 7, 8, 9… casi seguro que se debe al complejo e inaudito hecho de que tenemos diez dedos. Así las cosas, podemos imaginarnos que nuestros antepasados comenzaron a contabilizar las cosas utilizando dedos y luego manos. O sea, treinta ovejas eran tres veces las dos manos. Tirado. Quizá el problema fuera expresar en metros la distancia de la Tierra al Sol, pero tampoco creo que lo hicieran…

Por eso ahora quiero que piense que tiene dos dedos. O mejor, que tiene dos manos (es menos traumático, puede imaginarse con manoplas). No es tan difícil.

Usted puede diferenciar muchos niveles en lo que percibe: puede determinar varios grados de potencia en el sonido (volumen), diferentes intensidades de la luz (oscuro, más claro, brillante, cegador…), muchos sabores… la cuestión es que es muy difícil confundirse en un abanico más amplio de valores. Por ejemplo, puede pensar que hace frío pero no sabrá si hace 20º o 19º. O que no sepa expresar exactamente a qué sabe ese cerdo agridulce… aunque podría establecerlo en una escala, ya que usted emplea una percepción contínua. Sin embargo, para un ordenador, las cosas sólo son verdaderas o falsas, así es más difícil liarse. Los computadores son discretos: los parámetros con los que trabajen sólo pueden tomar un número finito de valores, nada de «sabe como entre amargo y salado», o es amargo o es salado.

En realidad, no se usa el famoso binario por otro motivo. Vamos a ir a algo más terrenal. Tengo un cable por el que puedo enviar lo que sea, imaginemos que puedo transmitir 0, 1, 2, 3, 4 o 5 voltios, para indicar la temperatura del sensor de mi nevera. Parece sencillo pero no lo es, estamos simplificando bastante.

Imagine que el sensor hace una medida, en la nevera hace 1ºC, luego envía 1V por el cable. En el extremo opuesto del cable hay un ordenador guarda el dato recibido en el disco para realizar un seguimiento. Ahora supongamos que hay una interferencia en la transmisión: puede ser debido a mil cosas (una luz que se enciente, un móvil que llama…) y que esa interferencia es capaz de varíar el voltaje que transmitía el cable. No me lo estoy inventando, a eso se le conoce como «ruido».

Como hemos dicho, hay un error en la transmisión y el ordenador receptor recibe 2V en lugar de 1V. Igual no pasa nada si la información que envío es de la temperatura de mi nevera, pero puede ser un problema si es la temperatura del reactor nuclear…

¿Por qué ha sucedido este problema? Porque la diferencia entre los niveles era muy pequeña, y la mínima interferencia era capaz de modificarla. Para evitar éstos problemas, los ordenadores usan sólo dos valores: 0 y 1. Normalmente, cuando quieren decir 0 no envían nada (lógico), y cuando quieren decir 1 envían 5 voltios. De esta manera, una diferencia de 1V no modifica el resultado, ya que si el receptor lee «2V» puede suponer que en realidad el emisor envió «0V».

Ahora, si no se ha dormido, estará usted pensando: vale, pero de esta forma sólo puedo enviar dos valores, 0 ó 1, y de la otra tenía un abanico de cinco… he perdido «resolución», ya no puedo informar de cinco valores diferentes sino sólo de dos… ¿qué hago?

Yo no veo problema… cuando contamos en sistema decimal (de 0 a 9) y llegamos al 9, tomamos una combinación de los primeros símbolos (10) y así representamos todo. La magia del binario es que podemos representar el valor que queramos combinando ceros y unos.

Así, vamos a empezar por el principio… si sólo tenemos 0 y 1, ¿cómo representamos el 0? ¡con un 0! ¡bien! ¿el 1? con un «1». Vale, ¿cómo escribimos el 2 en binario? esto es más difícil… «10». ¿el tres? «11» ¿y el 4? pues «100»… ¿no se aclara? veamos:

Número Binario
0 00
1 01
2 10
3 11

Es muy sencillo: sólo se trata de ir agotando combinaciones entre los dos dígitos. Para representar los números del 0 al 3 (los cuatro primeros) necesitamos 2 dígitos binarios, 2 bits. Para representar los números del 0 al 255 (los doscientos cincuenta y seis primeros) necesitamos 8 bits. ¿cómo lo sé? Porque 2 elevado a 8 es 256. Si recuerda la combinatoria, 256 son las posibles combinaciones que pueden formarse con ocho números utilizando dos. símbolos.

En el caso de que quisieramos representar los ocho primeros (del 0 al 7) necesitaremos tres dígitos, es decir, 3 bits:

Número Binario
0 000
1 001
2 010
3 011
4 100
5 101
6 110
7 111

El binario nos da mayor potencia expresiva: utilizando cada dedo de la mano como si fuera un bit, puede estar a 0 (recogido) o a 1 (extendido), lo que nos permite, si usamos las dos manos, contar hasta 1023 (10 bits)… es bastante, ¿no les parece?

Creo que de momento a Fernando Alonso le valdrán las manos para contar sus victorias… ;-)