EL LENGUAJE DE LAS COMPUTADORAS Una computadora maneja sus instrucciones por medio de un sistema numérico “binario”, que es el más simple de todos al contar con sólo dos símbolos para representar las cantidades. La computadora representa los comandos y elementos por medio de éstas cantidades. Aunque el sistema básico usado es el binario, la computadora puede también representar números por medio del sistema “hexadimal”. Los modernos equipos de cómputo actuales no utilizan el sistema decimal para representar valores numéricos, en su lugar se hace uso del sistema binario, también llamado complemento de dos. Es importante entender cómo representan las computadoras los valores numéricos, en éste capítulo analizaremos varios conceptos importantes incluyendo los sistemas binario y hexadecimal, la organización binaria de datos (bits, nibbles, bytes, palabras y palabras dobles), sistemas numéricos con signo y sin signo, operaciones aritméticas, lógicas, de cambio (shift) y rotación en valores binarios, campos de bits, empaquetado de datos y el juego de caracteres ASCII. En términos matemáticos un valor puede tomar un número arbitrario de bits, pero las computadoras por el contrario, generalmente trabajan con un número específico de bits, desde bits sencillos pasando por grupos de cuatro bits (llamados nibbles), grupos de ocho bits (bytes), grupos de 16 bits (words, ó palabras) y aún más. Como veremos mas adelante, existe una buena razón para utilizar éste orden. Fuente: http://www.modelo.edu.mx/univ/virtech/prograc/cbyn01.htm CONVERSIÓN ENTRE NÚMEROS DECIMALES Y BINARIOS Convertir un número decimal al sistema binario es muy sencillo: basta con realizar divisiones sucesivas por 2 y colocar los restos obtenidos, en cada una de ellas. Para formar el número binario tomaremos los restos en orden inverso al que han sido obtenidos. Por ejemplo: ARITMÉTICA BINARIA La Unidad Aritmético Lógica, en la CPU del procesador, es capaz de realizar operaciones aritméticas, con datos numéricos expresados en el sistema binario. Naturalmente, esas operaciones incluyen la adición, la sustracción, el producto y la división. Las operaciones se hacen del mismo modo que en el sistema decimal, pero debido a la sencillez del sistema de numeración, pueden hacerse algunas simplificaciones que facilitan mucho la realización de las operaciones. SUMA EN BINARIO La tabla de sumar, en binario, es mucho más sencilla que en decimal. Sólo hay que recordar cuatro combinaciones posibles. Recuerda que en el sistema decimal había que memorizar unas 100 combinaciones. 0+0=0 Las sumas 0+0, 0+1 y 1+0 son evidentes: 0+1=1 1+0=1 Pero la suma de 1+1, que sabemos que es 2, debe escribirse en binario con dos cifras (10) y, por tanto 1+1 es 0 y se arrastra una unidad, que se suma a la posición siguiente a la izquierda. SUSTRACCIÓN EN BINARIO Restar en binario es, nuevamente, igual que la misma operación en el sistema decimal. Pero conviene repasar la operación de restar en decimal para comprender la operación binaria, que es más sencilla. Los términos que intervienen en la resta se llaman minuendo, sustraendo y diferencia. Las sumas 0-0, 1-0 y 1-1 son evidentes: 0–0=0 1–0=1 1–1=0 La resta 0 - 1 se resuelve, igual que en el sistema decimal, tomando una unidad prestada de la posición siguiente: 10 -1, es decir, 210 – 110 = 1 Esa unidad prestada debe devolverse, sumándola, a la posición siguiente. MULTIPLICACIÓN Y DIVISIÓN EN BINARIO Para la multiplicación de números binarios se aplican las reglas aplicadas con el sistema decimal: 0x0=0 0x1=0 1x0=0 1x1=1 La división de números binarios requiere el mismo procedimiento utilizado par a la división de números decimales, incluso es más sencilla. COMPLEMENTOS Complemento a dos El complemento a dos de un número N, con n cifras, se define como: CN2 = 2n – N Veamos un ejemplo: tomemos el número N = 1011012 que tiene 6 cifras, y calculemos el complemento a dos de ese número: Complemento a uno El complemento a uno de un número N, con n cifras es, por definición, una unidad menor que el complemento a dos, es decir: Calculemos el complemento a uno del mismo número del ejemplo anterior: Da la sensación de que no va a ser más sencillo restar utilizando el complemento a dos, porque el procedimiento para calcular el complemento a dos es más difícil y laborioso que la propia resta. Pero es mucho más sencillo de lo que parece. En realidad, el complemento a uno de un número binario es el número resultante de invertir UNOS y CEROS. Si N = 101101 Fuente: http://72.14.253.104/search?q=cache:ZfMv35KFccMJ:platea.pntic.mec.es/~lgonzale/tic/calculo/Aritm %25E9tica%2520binaria.pdf+aritm%C3%A9tica+binaria&hl=es&gl=mx&ct=clnk&cd=3&client=firef ox-a PUNTO O COMA FLOTANTE Se denomina coma flotante o punto flotante (abreviado comúnmente como FP, del inglés floating point) al método de representación de números reales que, en oposición a la coma fija, permite que la posición de la coma se mueva (flote) a cualquier posición del número, permitiendo por ello un rango mayor de los números que es posible representar con cantidad fija de dígitos. Su uso es especialmente interesante en la informática pues permite trabajar con números decimales en rangos amplios, aunque también se usa el truncado de decimales. Los números representados en coma flotante siguen el siguiente patrón: r = m x be r: Valor real m: Mantisa, dígitos significativos del número. Ésta está normalizada cuando su parte entera es un número entero de un solo dígito. b: Base del sistema de representación (10 en sistema decimal, 8 en sistema octal, etc) e: Cantidad de posiciones hacia la izquierda del desplazamiento de la coma (el desplazamiento negativo denota desplazamiento de la coma hacia la derecha) respecto de r. Cabe añadir que cuando e vale cero la mantisa tiene el mismo aspecto que el valor real. En ciertos casos se usa como r = s x m x be, en el cual s vale 1 ó -1 y extrae el signo de m. Se dice entonces que la coma flota variando su posición arbitrariamente. Éste método se usa comúnmente en los sistemas decimal y binario por razones concretas y prácticas. CÓDIGOS DE REPRESENTACIÓN DE DATOS Un código es un conjunto de símbolos y normas que permiten la representación de información. Gracias a los códigos es posible que las computadoras pueden procesar información que no es numérica. Los códigos digitales permiten la representación de números, letras y señales de control usando únicamente bits. Seguramente el lector debe conocer algunos códigos, como la clave morse, donde cada letra es representada mediante una secuencia de puntos y rayas. De un modo similar, las antiguas tarjetas perforadas podían contener información gracias al código Hollerith, el cual asociaba la posición de las perforadoras con símbolos alfabéticos específicos. Fuente: http://www.gratisweb.com/atlasernesto/9.htm BCD El BCD (del inglés Binary-Coded Decimal), también llamado código 8421 representa cada dígito decimal por medio de cuatro dígitos binarios. El BCD no tiene equivalencia para letras. Este código agrupa cuatro bits porque, para representar los diez símbolos del sistema decimal se requiere un mínimo de cuatro cifras binarias. La tabla de equivalencias del BCD es la siguiente: El BCD fue utilizado por las primeras computadoras digitales y ahora es útil para circuitos electrónicos. EBCDIC (Binario Extendido para intercambio de Código Decimal) Es un código binario que representa caracteres alfanuméricos, controles y signos de puntuación. Cada carácter está compuesto por 8 bits = 1 byte, por eso EBCDIC define un total de 256 caracteres. Existan muchas versiones ("codepages") de EBCDIC con caracteres diferentes, respectivamente sucesiones diferentes de los mismos caracteres. Por ejemplo al menos hay 9 versiones nacionales de EBCDIC con Latín 1 caracteres con sucesiones diferentes. EBCDIC es un producto de IBM para ordenadores centrales. Fuente: http://es.wikipedia.org/wiki/EBCDIC Este código diseñado por la IBM, es una versión ampliada del BCD, y requiere de 8 bits con lo cual puede representar letras y símbolos, a demás de los números. ASCII (Código de Estándares Americanos para Intercambios de Información) Este código agrupa 7 bits, con los que se representan 96 caracteres y 32 símbolos de control. Es utilizado para el intercambio de información entre dispositivos fabricados por diferentes empresas y para transmisión telefónica de datos. La versión extendida del código ASCII utiliza 8 bits para manejar 255 caracteres. ASCII son las siglas de American Standard Code for Information Interchange. Su uso primordial es facilitar el intercambio de información entre sistemas de procesamiento de datos y equipos asociados y dentro de sistemas de comunicación de datos. En un principio cada carácter se codificaba mediante 7 dígitos binarios y fue creado para el juego de caracteres ingleses más corrientes, por lo que no comtemplaba ni caracteres especiales ni caracteres específicos de otras lenguas. Esto hizo que posteriormente se extendiera a 8 dígitos binarios La tabla del código ASCII de 7 bits es la siguiente: Baudot El código de Baudot, denominado así por su inventor Émile Baudot, es un juego de caracteres predecesor del EBCDIC y del ASCII y fue originalmente utilizado sobre todo en teletipos. El código original de Baudot, desarrollado alrededor del año 1874, se conoce como Alfabeto Internacional de Telegrafía Nº 1, y en la actualidad ya no está en uso. Para su transmisión se utilizaba un teclado de cinco teclas donde cada tecla representaba un bit de la señal de cinco estados. Un limpiador mecánico exploraba el estado del teclado y liberaba las teclas permitiendo que el operador introdujera el carácter siguiente. Alrededor del 1901 el código de Baudot fue modificado por Donald Murray reordenando los caracteres, agregando otros nuevos así como códigos de control. El reordenamiento hecho por Murray fue propiciado por su desarrollo de un teclado parecido al de una máquina de escribir. Entonces la disposición de los bits fue disociada de las teclas del operador. Murray arregló su código de modo que los caracteres más usados produzcan la menor cantidad de cambios de estado, lo que reducía al mínimo el desgaste en el equipo. Otra modificación del código de Murray que fue fomentada sobre todo por Western Union consistió en el descarte de algunos caracteres. Esta modificación final es la que se conoce generalmente como el código de Baudot, también conocido como Alfabeto Internacional de Telegrafía Nº 2 (ITA2). El ITA2 todavía se utiliza en teléfonos para sordos, en radioaficionados, y en RTTY (radioteletipo). Codificación CCITT-1 Con un teclado de cinco teclas sólo se puede definir una cantidad de palabras de 32 (= 25) combinaciones diferentes y esta cantidad no satisface las 26 letras más las 10 cifras, por lo tanto no puede codificar un alfabeto. La idea de Baudot fue introducir la idea de espacio como introductor de comandos, de esta forma duplicó el número de posibilidades. Fuente: http://es.wikipedia.org/wiki/C%C3%B3digo_Baudot Gray El Código Gray es un caso particular de código binario. Consiste en una ordenación de 2n números binarios de tal forma que cada número sólo tenga un dígito binario distinto a su predecesor. Esta técnica de codificación se originó cuando los circuitos lógicos digitales se realizaban con válvulas de vacío y dispositivos electromecánicos. Los contadores necesitaban potencias muy elevadas a la entrada y generaban picos de ruido cuando varios bits cambiaban simultáneamente. El uso de código Gray garantizó que en cualquier transición variaría tan sólo un bit. En la actualidad, el código Gray se sigue empleando para el diseño de cualquier circuito electrónico combinacional mediante el uso de un Mapa de Karnaugh, ya que el principio de diseño de buscar transiciones más simples y rápidas entre estados sigue vigente, a pesar de que los problemas de ruido y potencia se hayan reducido. Hay varios algoritmos para generar una secuencia de código Gray (y varios códigos posibles resultantes, en función del orden que se desee seguir), pero el más usado consiste en cambiar el bit menos significativo que genera un nuevo código. Este es un código gray de cuatro bits generado con dicho algoritmo: Dígito decimal Código Gray Dígito decimal Código Gray 0 0000 8 1100 1 0001 9 1101 2 0011 10 1111 3 0010 11 1110 4 0110 12 1010 5 0111 13 1011 6 0101 14 1001 7 0100 15 1000 El primer uso documentado de un código de estas características fue en una demostración del telégrafo del ingeniero francés Émile Baudot, en 1878. Pero no fueron patentados hasta 1953 por Frank Gray (que dio nombre al sistema de codificación), un investigador de los laboratorios Bell. Binario a Gray Para pasar un número binario al código binario Gray, hay una regla fácil de implementar en un lenguaje de programación: 1. Un número en binario siempre empieza en 1 – Los ceros a la izquierda no cuentan –; Pues en Gray también. Ej: 1000011110000 en binario se escribe 1xxxxXXXXxxxx. 2. Ahora nos fijamos en el segundo dígito. Si es igual al dígito anterior se pone un 0 (no cambia); Si es diferente --como es el caso, pues el dígito anterior era un 1 y el que observamos un 0-- se pondrá un 1 (cambia). Ej: El número del ejemplo anterior será: 11xxxXXXXxxxx. 3. En los casos sucesivos se repite el paso anterior, observando en el número binario 'natural' el dígito anterior al que se evalúa. Ej: El número del ejemplo anterior, pasado a código Gray será: 1100010001000. Otros ejemplos: 1010 - 1111 111000 - 100100 011001 - 010101 110101010001 – 101111111001 Otra técnica sencilla para pasar de binario a Gray sin usar un lenguaje de programación es esta: 1. Aplicar un XOR (disyunción exclusiva, también se puede sumar cada bit individualmente descartando cualquier acarreo) del número a sí mismo pero con un acarreo a la derecha. 2. Eliminar el bit del extremo derecho. Ej: Pasar diez (1010) de binario a gray será 1111. 1010 1010 -------1111 Otros ejemplos: 111000 111000 ----------100100 110101010001 110101010001 ------------------101111111001 Gray a Binario Hacer el cambio contrario es simplemente invertir lo que hace el anterior, de forma que si se encuentra un cero (siempre que no sea al principio) se debe poner la cifra anterior; En cambio si pone un 1 es porque la cifra ha cambiado así que si había un 0 ahora se pone un 1 y viceversa. Fuente: http://es.wikipedia.org/wiki/C%C3%B3digo_Gray