Un ordenador por dentro (II): Representando datos con 0 y 1
Marzo 31, 2008
En el artículo anterior usted verificó cómo todo funciona mediante ceros y unos, pero quizá se esté preguntando: “yo en mi ordenador no veo ceros y unos, sino letras y números como las que leo y escribo por el teclado”. Eso es porque el ordenador, en su interior, considera las letras y los números como agrupaciones de ceros. En este capítulo usted aprenderá cómo se guardan los datos que usted usa y lee en su ordenador a partir de sólo ceros y unos.
Los datos que se pueden representar mediante ceros y unos agrupados se clasifican según su tamaño. Por ejemplo, un número binario (es decir, que sólo puede ser 0 o 1) de un sólo dígito se denomina bit (del inglés Binary digIT). Es la unidad de información más pequeña que puede existir, ya que sólo representa una elección entre dos opciones posibles: 0 o 1, sí o no, verdadero o falso, etc. Si se agrupan cuatro bits, se obtiene un Nibble, que en inglés significa bocado, y con ésto se pueden representar todos estos números binarios: 0000, 0001, 0010, 0011, 0100, 0101, 0110, 0111, 1000, 1001, 1010, 1011, 1100, 1101, 1110 y 1111. En total dieciséis opciones posibles, con las que se puede representar, por ejemplo, todos los números entre 0 y 15 (del 0000 que representa el 0, hasta el 1111 que representa al 15). Ocho bits juntos componen un byte, que permite representar todos los números entre 0 y 255, y también se usa para representar letras, como verá más adelante. Si usted necesita representar más números, tan sólo ha de añadir más bits. Con 16 bits usted podrá representar más de 65000 números, con 24 bits, 16 millones, y con 32 bits, más de 4 mil millones de números diferentes. Los grandes computadores utilizan números de más de 80 bits para representar medidas astronómicas o números para escalas subatómicas, con decenas de decimales.
Representando números
El sistema de numeración que utilizan las personas, que fue tomado prestado del mundo árabe siglos atrás, se conoce como sistema decimal. En este sistema, los números se representan con varios dígitos que van del 0 al 9. Así, para contar, se empieza con el 0, luego el 1, el 2… y cuando se llega al 9 y no hay más números para representar, se añade un dígito más a la izquierda (el 1) y el dígito de más a la derecha se reinicia a 0. Así se continúa con el 10, el 11, el 12, cuando se llega a 19, el dígito de la derecha se vuelve a reiniciar a 0 y el de la izquierda se incrementa a 2: 20, 21, 22… y cuando llega a 99, los dos nueves se reinician a 0, y se añade otro dígito a la izquierda, obteniendo el 100.
No es la intención de este artículo enseñarle a contar de 0 a 100, pero sí que se fije usted cómo con un reducido conjunto de símbolos (0 al 9), usted puede representar números tan grandes como usted quiera, tan sólo añadiendo dígitos. Ahora imagine que en vez de símbolos del 0 al 9, usted sólo tiene 2: el 0 y el 1. En este caso el mecanismo sería exactamente igual al anterior:
- Empieza por el 0.
- El siguiente número es el 1.
- No quedan más números para representar, así que se reinicia a 0 y se añade un dígito a la izquierda, con lo que tenemos un 10.
- El siguiente número es el 11.
- No quedan más números para representar, así que se reinician ambos dígitos a 0, y se añade un dígito a la izquierda, con lo que tenemos un 100.
- El siguiente número es el 101.
- Como el dígito de más a la derecha ya no se puede incrementar, se reinicia y se incrementa el que está inmediatamente más a la izquierda. Así se obtiene el 110.
- Con este sistema se continua con el 111, 1000, 1001, 1010, 1011, 1100, etc…
Ya ha visto que, para contar en binario tan sólo hay que aplicar la filosofía del sistema decimal que usted utiliza, sólo que en vez de considerar números del 0 al 9, usted cuenta sólo con números del 0 al 1. ¡Pero OJO, no caiga en el error más común! El 0 binario equivale al 0 decimal y el 1 binario equivale al 1 decimal, pero el 10 binario no equivale al 10 decimal, sino al 2. Así mismo, el 11 (binario) equivale al 3 (decimal), el 100 (binario) es igual al 4 (decimal) etc…
Representando letras
El código ASCII, que en inglés es el acrónimo de Código Estándar Americano para el Intercambio de Información, se utiliza para representar letras mediante agrupaciones de ceros y unos. En concreto, utiliza un byte con el que puede representar 256 caracteres, que pueden ser letras, números, signos de puntuación, operadores matemáticos, o cualquier otro símbolo que pueda aparecer en un texto. Por ejemplo, la letra A mayúscula pertenece al número 65, que en binario es 1000001 y la B mayúscula al 66 (1000010 en binario). Este sistema para representar letras fue usado durante varias décadas, ya que permitía representar todas las letras del alfabeto occidental y aún sobraba para representar caracteres extraños como caritas, rayas, u otros símbolos que se utilizaban para dibujar cosas en pantalla cuando los ordenadores sólo eran capaces de mostrar textos (no se podían ver fotos y gráficos tan sofisticados como ahora).
Pero en la era de internet los ordenadores se envían datos de un lugar a otro del mundo, incluso a aquellos donde se utilizan otro tipo de letras. El problema que surge ahora es: ¿Si el código ASCII sólo permite representar 256 caracteres, cómo representar con ceros y unos los miles de caracteres árabes, griegos, hebreos, japoneses y de otros lenguajes que existen? La respuesta es muy fácil: en vez de utilizar un byte, se utilizan dos (16 bits), que permitirán representar más de 65000 caracteres diferentes. Este es el código que se utiliza actualmente en algunas aplicaciones multi-idioma, llamado UNICODE, con el que se puede representar casi cualquier letra de cualquier lenguaje en el mundo. Cuando los 65000 caracteres de Unicode se quedaron pequeños para representar las decenas de miles de caracteres chinos, japoneses o koreanos, el tamaño de Unicode se amplió hasta 32 bits, con el cual se pueden representar más de 4 mil millones de caracteres diferentes! Aún así, el formato que se sigue utilizando mayoritariamente es el antiguo ASCII.
Una vez representada una letra con un byte, para representar un texto entero, tan sólo hay que guardar los bytes con los códigos ASCII de las letras del texto, en el mismo orden que aparecen éstas. Por ejemplo, el texto “HOLA”, que se compone de los códigos ASCII 72(H), 79(O), 76(L) y 65(A), en binario sería todos esos números decimales puestos en binario uno detrás de otro, de la siguiente manera: 01001000010011110100110001000001
Resumen
Tras haber aprendido en el artículo anterior qué son los 0 y los 1 de su ordenador, ahora ya sabe cómo se utilizan para representar los datos que hay dentro de éste. Pero esos datos tienen que ser creados, cambiados, almacenados o borrados automáticamente. Eso quiere decir que todavía no lo sabe todo acerca de los ceros y los unos.
En el siguente capítulo, llamado Los Sistemas Digitales, usted podrá saber cómo se usan los ceros y unos para hacer cosas, como crear datos, modificarlos, o dibujarlos para que usted pueda leer los datos por la pantalla.
Para saber un poquito más
- Aprende a convertir números binarios a decimales y vice-versa con unas simples fórmulas matemáticas: http://electronred.iespana.es/sist_numera.htm
- Aprenda un poco más sobre los caracteres ASCII y consulte una tabla donde se muestran los códigos de todos ellos: http://es.wikipedia.org/wiki/ASCII
Abril 22, 2008 a las 13:55 pm
Simplemente señalar que busques 0 o 1 en el texto para cambiarlo por 0 ó 1. La o entre dos números siempre se escribe con acento para distinguirla sin duda del cero.
Muy buenas explicaciones, gracias y saludos.