lunes, mayo 15, 2006

El binario al rescate

El 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úmeroBinario
000
101
210
311

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úmeroBinario
0000
1001
2010
3011
4100
5101
6110
7111

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... ;-)

9 Comentarios:

A las 1:55 a. m., Anonymous Jody Dito escribió... (¡Gracias, Anonymous Jody Dito!)

Qué curioso, oyesss!!. Sabía eso de 0 y 1 pero lo de contar no y joder!! es curioso, mira tu!

PD: gracias pau por la respuesta a mi otro comentario.

 
A las 4:13 a. m., Anonymous Treiral_ escribió... (¡Gracias, Anonymous Treiral_!)

Cuando estudie para ese examen (sistemas digitales) no cayó ni una sola de las preguntas que me estudie, todo lo que escribí fue mas o menos entre inventado y lo poco que recordaba de los primeros días de clase...
Aprobé, que felicidad :_)

 
A las 11:46 a. m., Blogger Juan Haldudo escribió... (¡Gracias, Blogger Juan Haldudo!)

Bien, gracias a tí, al fin he podido entender plenamente ése maldito chiste de "hay 10 tipos de personas, las que saben binario y las que no" :-P
Un saludo.

PS: Por si alguien no lo ha pillado, lo mío es un comentario irónico. Que no soy TAN bruto. ;-)

 
A las 2:25 p. m., Anonymous Juanjo escribió... (¡Gracias, Anonymous Juanjo!)

Pues Alonso deberá decirnos cual es "el dedo de más peso", sino va a ser complicado adivinar qué numero nos indica en binario.

 
A las 2:38 p. m., Blogger Illaq escribió... (¡Gracias, Blogger Illaq!)

Estoy realmente admirado (y no es coña) por la "calidad didáctica" de tus posts. No sé que dirían los maestros, pero, me parece que queda muy bien explicado el sistema binario y, de paso, casi la diferencia entre "digital" y "analógico". ¡Muy bueno!

 
A las 2:39 p. m., Blogger Pau escribió... (¡Gracias, Blogger Pau!)

Tienes toda la razón, Juanjo, de eso mejor que se encargue el Lobato :-P
Muy bueno tu blog, tengo que visitarte despacio!

 
A las 2:42 p. m., Blogger Pau escribió... (¡Gracias, Blogger Pau!)

No vi tu comentario, Illaq (lo hemos escrito a la vez). Muchísimas gracias por tus elogios, pensaba que el post me habia quedado demasiado enrevesado pero ya veo que no :-D

¡Gracias a todos!

 
A las 7:22 p. m., Blogger Misslucifer escribió... (¡Gracias, Blogger Misslucifer!)

Muy interesante, la verdad es que tenía curiosidad por saber como funcionaba la cosa esa (dícese, código binario) pero nunca me había parado a buscarlo.

Sin embargo, siento decirte que has cometido un terrible error en tu entrada, hasta tal punto que si no fuera por mi gran sagacidad, no habría podido comprender absolutamente nada de tu explicación, y es que en el 6º parrafo, en la 4º linea, falta una f en interFerencia. ;-)

 
A las 8:14 p. m., Blogger Pau escribió... (¡Gracias, Blogger Pau!)

Gracias por la corrección, Misslucifer. En efecto se trataba de un tema grave ;-) Pero ya está corregido por el equipo técnico SF, operativo 24H. Tiempo de reacción: 50 minutos (y porque tenía el ordenata descansando :-P)

 

Recuerda que nos hemos mudado a nosololinux.com

<< Home