domingo, 25 de julio de 2010

Codigo binario, ASCII

TRANSFORMACION DE DATOS EN INFORMACION
A pesar de que la mayoría de las computadoras no pueden responder a la voz humana, la gente se comunica con ellas todo el tiempo. Muchas veces parece como si las computadoras nos entendieran, pues producen información que entendemos. En realidad, las computadoras no pueden entender nada. Todo lo que pueden hacer es reconocer dos estados físicos bien determinados producidos por electricidad, polaridad magnética o luz reflejada; esencialmente, pueden distinguir cuando un interruptor esta prendido o apagado.
Aunque cada señal individual identificada por la computadora por si sola no tiene ningún significado, la computadora contiene tantos interruptores, llamados transistores, y trabaja a velocidades tan extraordinarias que podemos usarla para organizar estas señales individuales en patrones complejos que tienen algún significado para nosotros. Sin embargo, la computadora hace todo esto sin entenderlo, las ideas, visión y conclusiones tienen que venir de la gente.
El termino que usamos para describir las señales con las cuales trabaja la compu tadora es datos. Aunque las palabras datos e información muchas veces son usadas indistintamente, si existe una diferencia importante entre ellas. En un sentido estricto, los datos son las señales individuales en bruto y sin ningún significado que manipulan las computadoras para producir información.
Puedes pensar en los datos como si fueran elementos fuera de contexto, como las letras individuales en esta página. Tomadas individualmente, no nos dicen nada, pero agrupadas de esta manera particular, transmiten un significado a aquellas personas que hablan español. Asi como el escritor transforma las letras del alfabeto en palabras y oraciones, una computadora transforma datos en información útil.
Dado que la conversión de datos en información y viceversa es una parte funda mental de lo que hacen las computadoras, necesitas entender cómo funciona esta conversión para saber cómo trabaja la computadora.
SISTEMAS NUMERICOS
Para una computadora, todo es un número. Números son números, letras son números y signos de puntuación, símbolos e inclusive las mismas instrucciones de la computadora son números. Puedes encontrar esto difícil de creer porque seguramente ya has visto pantallas de computadora con palabras y oraciones desplegadas, pero es cierto. Cuando ves las letras del alfabeto en una pantalla de
computadora, lo que estás viendo es solamente una manera de representar números. Tomemos, por ejemplo, esta oración:
Aquí hay algunas palabras.
Tú y yo las vemos como una cadena de caracteres alfabéticos, pero una computa dora la ve así.
65 113 117 161 32 104 97 121 32 97 108 103 117 110 97 115 32 112 97 108 97
98 114 97 115 46
Y aun esta secuencia de números es como una representación abreviada de como la computadora realmente ve la oración. En realidad la computadora ve nuestra oración como una serie de 208 unos y ceros (Figura 4-1). Poder entender como representa números de diferentes maneras la computadora, es fundamental para entender como convierte datos a información.
En esta versión binaria de la oración "Aquí hay algunas palabras", cada par de grupos de cuatro dígitos representa el código numérico de un carácter. Por ejemplo, 0100 0001 es la representación de 65 en base 2, una A en ASCII.
Desafortunadamente las computadoras no usan el mismo sistema de números que usamos nosotros. De hecho, las personas que programan a las computadoras usan varios sistemas diferentes de números, además del conocido esquema de base 10 (o decimal) que usamos todo el tiempo. Los más importantes de estos son el sistema binario o de base 2, y el sistema hexadecimal o de base 16.
Lo esencial que se debe reconocer y entender sobre los diferentes sistemas numéricos es que cada uno de ellos es solamente un método diferente para representar cantidades. Las cantidades en si no cambian, es solo que los
símbolos usados para representarlos son diferentes. Cuando usas un término como base 10 para describir un sistema numérico, la segunda parte del término
(el número) describe el numero de símbolos que utiliza el sistema de números. Por ejemplo, el sistema de números de base 10 tiene diez símbolos y el sistema de base 16 tiene dieciséis.
Quizá te preguntes, ¿por que los diseñadores de las computadoras hicieron que estas maquinas usaran un sistema de numeración que es totalmente ajeno a la mayoría de la gente? Como veras más adelante, hay varias buenas razones.
EI sistema numérico decimal. La mayoria de las culturas usan el sistema decimal o de base 10 y lo han hecho desde la antigüedad. Es creencia generalizada que usamos este sistema de números porque tenemos diez dedos en las manos. Una de las primeras cosas que nos enseñan es a contar y estas lecciones casi siempre involucran el uso de nuestros diez dedos. Es más, generalmente aprendemos a contar hasta diez antes de darnos cuenta de que hay números mayores.
Los símbolos que usamos para representar los números cuando los escribimos son aquellos que van del 0 al 9. Aunque a la mayoría de nosotros no nos enseñan a contar desde cero, el cero es realmente el primer símbolo de la secuencia. Es más, el cero es el primer símbolo en todos los sistemas de números. ¿Pero que pasa cuando estamos escribiendo números y llegamos a 10? No hay nada de especial o misterioso acerca de este número, solamente es uno más que nueve, el problema es que ya se nos acabaron los símbolos, esto nos obliga a empezar a usar dos símbolos, en lugar de uno, para representar los números a partir de ese punto.
El modo lógico para representar estos números mas grandes es empezar otra vez la secuencia e incluir otro símbolo que represente el número de veces que hemos completado una secuencia. El "1" en el numero "10" nos indica que la secuencia se completo una vez y el "0" nos indica que estamos en el primer número de esta nueva secuencia.
Este concepto de usar los símbolos disponibles, en orden, hasta que los hayamos usado todos y luego agregar otro digito, es la base de todos los sistemas de numeración. La única diferencia es el numero de símbolos que hay para usar.
EI sistema numérico binario. Inicialmente, cuando fueron desarrolladas las computadoras, el problema del almacenamiento de datos fue uno de los mas difíciles de resolver. Piénsalo: si quisieras construir una maquina que pudiera sumar dos números, por ejemplo 1 + 1, tendrías que darle a la maquina la
capacidad para guardar esos números de alguna manera antes de que empezaras a resolver el problema de cómo sumarlos.
La idea de enviar información eléctricamente fue propuesta en la última parte del siglo XVIII, p0ero le tomo casi otro siglo a Samuel F.B. Morse perfeccionar el telégrafo en 1844. Un problema con el envío eléctrico de un mensaje es cómo dar formato al contenido. Las señales tienen que ser codificadas de tal manera que las entienda tanto el que las envía como el que las recibe.
El asistente de Morse Alfred Vail, fue a una oficina de imprenta y anotó la cantidad de cada letra que usaban. Vail encontró que los impresores tenían 12.000 Es,
9.000 Ts, 8.000 As y así sucesivamente hasta llegar a 200 Zs, la letra menos usada del alfabeto. El código Morse asigna los patrones más sencillos a los caracteres más utilizados. El código Morse usa combinaciones del los símbolos, un punto (.) y un guión (-) para representar letras del alfabeto. Para enviar un guión, el operador tiene que mantener la tecla del telégrafo apretada tres veces más tiempo que para un punto. El guión es un clic “da” y el punto es un clic “dit”. En el código Morse una S equivale a … y una O equivale a ---. Agrega otra S y tienes SO, o “ dit dit dit, da da da, dit dit dit” la señal internacional de auxilio. Éste es un ejemplo de cómo dos símbolos sencillos pueden ser transformados en un mensaje de mucha fuerza.
Cada golpe de la tecla del telégrafo activaba y soltaba un electroimán en el extremo receptor, lo que generaba un sonido de clic. Los puntos (sonido dit) y guiones (sonido da) del código Morse son análogos a los unos y ceros del código de las computadoras.Para poder construir un dispositivo que pudiera almacenar datos con la tecnología mecánica disponible en aquella época, los datos tenían que ser reducidos a su estado mas fundamental, que es el estado en donde Únicamente existen dos condiciones: encendido ó apagado. No importa cómo describas las dos condiciones específicas siempre y cuando sean opuestas y diferentes sin lugar a cualquier duda Podrías describirlas como verdadera o falsa, si o no, encendido o apagado, abierto ó cerrado, etcétera.
Un dispositivo mecánico disponible en aquella época era el relevador, una especie de interruptor que prendía cuando se Ie aplicaba un voltaje y se apagaba al quitarselo. Las condiciones de encendido o apagado de los relevadores podían usarse para describir los dos estados fundamentales de un dato. Ahora, supón que conectas un foco a uno de estos relevadores que cuando cierras el circuito se enciende y cuando abres el circuito se apaga. Lo que tienes ahora es una máquina que puede encender y apagar un foco. ¿ cómo podría esto ayudarte a sumar 1 más 1? Es más, ¿Cómo te puede ayudar a resolver el problema de representar números?
Lo único que necesitas hacer para que esta máquina contenga un número es decidir que cuando el foco esté apagado su valor será 0 y cuando esté encendido valdrá 1. Probablemente estas pensando: De que nos sirve esto? , porque nada más se pueden representar dos números. Sin embargo si usas más de un relevador y más focos, puedes representar números más y más grandes .
Supón que tienes dos de estos relevadores, veamos cuantos patrones puedes producir combinando los focos que están prendidos y apagados.Como se ve, tres relevadores pueden desplegar ocho combinaciones. Observa que los patrones en estas tablas no están en desorden. Están arreglados lógicamente, siguiendo el mismo método usado para contar con cualquier sistema de números. Compara los patrones en la tabla anterior con estos que muestran cómo contar hasta siete en el sistema numérico binario (base 2).Por lo tanto, si remplazas cada foco apagado con un cero y cada foco encendido con un 1, puedes empezar a contar usando números binarios. Tres relevadores sólo te permiten representar ocho cantidades distintas (del cero al siete en decimal).
Debido a que es mucho más sencillo desarrollar hardware que pueda distinguir entre dos condiciones únicas (prendido y apagado) que entre cualquier número más grande, en la actualidad, el hardware sigue guardando datos en estos dos estados fundamentales. La CPU de la computadora está hecha de pequeños relevadores llamados transistores. Son similares en principio a los relevadores, pero mucho más sofisticados. Los transistores que se fabrican hoy en día son tan pequeños que algunas CPU tienen más de un millón de ellos. Sin embargo, un transistor, como sus predecesores, sólo puede guardar un dato, esta prendido o apagado, abierto o cerrado. Estos datos individuales son llamados bits, una abreviacion del termino binary digits (digitos binarios). Para la computadora, un transistor cerrado representa un uno binario; un transistor abierto representa un cero.
EI sistema numérico hexadecimal. Ahora que entiendes por que usan números binarios las computadoras, piensa cómo sería si en realidad tuvieras que trabajar con la computadora en binario. Te tomaría tanto tiempo codificar instrucciones y decodificar la salida que no valdría la pena el esfuerzo. Por esta razón, se hizo necesario desarrollar un método para representar, en una forma más fácil de leer, escribir y entender, todos los unos Y los ceros que forman los números binarios. Una unidad de medición de datos más grande es un grupo de ocho bits, llamada byte. Hablaremos más acerca de bytes en la siguiente sección: "Representación de datos". Por ahora, sólo necesitas saber que un byte es un grupo de ocho bits y que esta unidad es la manera más importante de agruparlos.
El sistema de números de base 16, también llamado hexadecimal 0 hex, usa 16 símbolos para representar números. Como sólo existen nueve símbolos numéricos en el sistema alfanumérico inglés (0 a 9), el sistema hexadecimal usa letras en lugar de números para representar valores mayores a nueve. El cuadro 4 muestra las representaciones decimales, binarias y hexadecimales para los valores del 0 al
15.
Cuadro 4
Números decimales, binarios y hexadecimalesObserva que el dígito hexadecimal más grande, F, corresponde al número binario
1111. Otra manera de decir esto es que un solo dígito hexadecimal puede representar cualquier combinación posible de cuatro bits . Por lo tanto, como un byte se compone de ocho bits, cualquier byte puede ser representado exactamente por dos dígitos hexadecimales. Toma, por ejemplo, el siguiente número binario:
01110101
Cuando separa este número en dos grupos de cuatro bits, se convierte en:
0111 0101
Ahora viendo el cuadro 4-1, puede ver que
0111(binario) = 7 (base 16)
0101(binario) = 5 (base 16)
Cuando escribes números en un sistema numérico distinto al de base 10, es costumbre poner al final de la cantidad un número como subíndice para mostrar cual sistema numérico estamos usando. Por ejemplo, cundo combinamos estos dos dígitos hexadecimales para formar un número, este es seguido por un subíndice 16 para mostrar que el número es una representación hexadecimal. Este número es 7516 ó 75 hexadecimal.
Otro método para indicar que un numero está representado con dígitos hexadecimales es poner una "h" 0 "H" después del último digito o, menos frecuen- temente, una "X". Este método en realidad es más común en el mundo de computo que el método del subíndice. La "h" o "X" no es parte del número (los dígitos hexadecimales llegan hasta la F); solo muestra que el número está representado por dígitos hexadecimales (por ejemplo, 75H o 75h).
Recordaras que en las matemáticas elementales, un número sencillo de base 10
como 123 puede ser dividido y recombinado como sigue:
1 X 102 = 100
2 X 101 = 20
3 x 10° = 3
123
El 1 en 123 representa 100,10 que es 102. E12 es en realidad 20, que es 2 x 10, y el 3 es solo 3. Puedes hacer las mismas operaciones con los números hexadecimales, pero con el beneficio adicional de encontrar cual es el número
equivalente en base 10. Lo único diferente que necesitas hacer es sustituir 16 por los 10:
7 X 161 = 112
5 x 16° = 5
117
Aquí hay un ejemplo más; toma el número binario
01101111
Divídelo en grupo de cuatro bits, como sigue:
0110 1111
Remítete otra vez al cuadro 4-1 para encontrar los dígitos hexadecimales corres- pondientes a estos números binarios.
0110 = 616
1111 = F16
6Fhex
6Fh puede ser convertido a su representación decimal con el mismo método que usamos arriba, nada más que cuando uno de los dígitos es una letra, primero tienes que convertir la letra a su equivalente decimal, como sigue:
6 X 161 = 96
F(15) x 16° = 15
111
Representación de Datos
Ya que un bit solo puede representar dos símbolos únicos, un cero y un uno, tiene que haber una unidad más grande para datos, compuesto de una colección de bits, para representar números y otros símbolos, como los caracteres y los signos de puntuación que usamos en el lenguaje escrito.
Esta unidad mas grande, o grupo de bits, debe tener suficientes bits para repre- sentar todos los símbolos que se puedan usar, incluyendo dígitos numéricos, mayúsculas y minúsculas del alfabeto, signos de puntuación, símbolos
matemáticos, etc. Además de estos símbolos comunes, necesita haber espacio adicional para comandos que se usan para controlar dispositivos.
Puede parecer raro, en principio tener comandos para dispositivos formando parte de esta serie de letras, números y signos de puntuación, pero en realidad es muy natural. Por ejemplo, si estas tecleando una oración en una computadora, cuando presiona la tecla de Enter o return, o la tecla de tabulación, quieres que estas teclas tengan un efecto especial en el texto: tanto en la pantalla que ves al teclear, como sobre el papel cuando mandas a imprimir.
Para obtener tal efecto, estas teclas especiales deben producir caracteres especiales invisibles que tu pantalla e impresora puedan interpretar, pero que no aparezcan en el texto. Estos caracteres son llamados Caracteres de Control o Códigos de control.
Vamos a hacer una lista de los caracteres y símbolos que hemos identificado y que sabemos que queremos representar.
Hasta este momento nuestra lista suma 118. Ahora ve esta tabla, que muestra el número de símbolos que se pueden representar por un numero mas grande de bits.
Como podrás ver podemos representar todos nuestros símbolos usando una unidad de siete bits, pero eso nada más nos dejaría 10 sin usar. ¿Qué haríamos si quisiéramos agregar más símbolos, como flechas y tréboles, o si quisiéramos trazar líneas o cuadros con símbolos especiales? Siete bits no son suficientes; sin embargo ocho bits duplican la capacidad. Con ocho bits, podemos representar todos 118 símbolos que hemos definido y tendríamos 138 símbolos disponibles. Una unidad con mas de ocho bits nos daría demasiados símbolos extra y desperdiciaría espacio. Por lo tanto, el numero mas lógico de bits para nuestra unidad mas grande seria ocho. Como recordaras, un grupo de ocho bits es llama do byte.
Ahora veamos dos de los sistemas mas importantes que se han desarrollado para representar símbolos con números binarios o bits, EBCDIC Y ASCII, Y un estándar mas reciente, Unicode.
ASCII. La solución de la organización ANSI para representar símbolos con bits de datos fue el código de caracteres ASCII. Hoy en día, el código de caracteres ASCII es por mucho el mas común. Inicialmente el código ASCII, acrónimo de American Standard Code for Information Interchange (código americano estándar para intercambio de información), era un código de ocho bits, pero el octavo bit tenia un propósito especial y se llamaba bit de paridad. De tal manera que, en realidad, el ASCII original era un codigo de siete bits que definía 128 símbolos.
Mas tarde, los bits de paridad dejaron de tener importancia e IBM tomo la iniciativa nuevamente y desarrollo una versión mejorada de ASCII que hacia uso del octavo bit, permitiendo que ASCII describiera 256 símbolos. Cuando hizo esto IBM, no cambiaron ninguno de los 128 caracteres originales, lo que permitió que programas y software diseñados para trabajar con el ASCII original pudieran seguir trabajando con datos del nuevo código de caracteres.
Una manera de ver los codigos ASCII es darse cuenta que el símbolo asociado con el c6digo es una manera adicional de describir los dígitos binarios de ocho bits. Por ejemplo, el número binario con el que trabajarnos anteriormente,
01101111
Que es un 111 decimal (y 6Fh), se representa en el conjunto de caracteres ASCII
por la letra minúscula “o” .
Unicode. Un nuevo estándar para representaci6n de datos, llamado Unicode, proporcionara dos bytes para representar símbolos. Con dos bytes, un carácter de Unicode podría ser uno de mas de 65 000 caracteres o símbolos diferentes, suficientes para cualquier carácter y símbolo del mundo, incluyendo los vastos alfabetos del idioma chino, del coreano y del japonés. Si existiera un solo c6digo de caracteres disponible para cubrir todos los idiomas del mundo entero, los programas y datos de computadora podrían ser intercambiables.
Código ASCII
El código ASCII (acrónimo inglés de American Standard Code for Information Interchange — Código Estadounidense Estándar para el Intercambio de Información), pronunciado generalmente [áski], es un código de caracteres basado en el alfabeto latino tal como se usa en inglés moderno y en otras lenguas occidentales. Fue creado en 1963 por el Comité Estadounidense de Estándares
(ASA, conocido desde 1969 como el Instituto Estadounidense de Estándares Nacionales, o ANSI) como una refundición o evolución de los conjuntos de códigos utilizados entonces en telegrafía. Más tarde, en 1967, se incluyeron las minúsculas, y se redefinieron algunos códigos de control para formar el código conocido como US-ASCII.
El código ASCII utiliza 7 bits para representar los caracteres, aunque inicialmente empleaba un bit adicional (bit de paridad) que se usaba para detectar errores en la transmisión. A menudo se llama incorrectamente ASCII a otros códigos de caracteres de 8 bits, como el estándar ISO-8859-1 que es una extensión que utiliza 8 bits para proporcionar caracteres adicionales usados en idiomas distintos al inglés, como el español.
ASCII fue publicado como estándar por primera vez en 1967 y fue actualizado por última vez en 1986. En la actualidad define códigos para 33 caracteres no imprimibles, de los cuales la mayoría son caracteres de control obsoletos que tienen efecto sobre como se procesa el texto, más otros 95 caracteres imprimibles que les siguen en la numeración (empezando por el carácter espacio).
Casi todos los sistemas informáticos actuales utilizan el código ASCII o una extensión compatible para representar textos y para el control de dispositivos que manejan texto.

No hay comentarios:

Publicar un comentario en la entrada