TEMA 2 REPRESENTACIÓN DE LA INFORMACIÓN. SEGUNDA PARTE
Álvaro Pablos Lamas
Índice de contenido 1.- Formatos para la representación de los números ..........................................................................3 2.- Representación en Coma Fija..........................................................................................................3 3.- Representación de números enteros con signo..............................................................................4 3.1.- Magnitud y Signo.....................................................................................................................4 3.2.- Complemento a 1 (o complemento a la base menos 1).........................................................4 3.3.- Complemento a 2 (o complemento a la base menos 2).........................................................5 4.- Operaciones numéricas en coma fija..............................................................................................5 4.1.- Suma aritmética de números binarios....................................................................................5 4.2.- Diferencia aritmética de números binarios.............................................................................9 4.3.- Multiplicación y división........................................................................................................10 5.- Representación en coma flotante.................................................................................................11 5.1.- Rango de representación.......................................................................................................11 5.2.- Formatos de representación en coma flotante.....................................................................12 6.- Códigos de detección y corrección de errores..............................................................................13 6.1.- TIPOS DE CÓDIGOS DETECTORES..........................................................................................13 6.2.- DISTANCIA HAMMING...........................................................................................................13 6.3.-Código Hamming para la detección y corrección de errores.................................................14 7.- INNOVACIÓN: REPRESENTACIÓN CUÁNTICA DE LA INFORMACIÓN.............................................14 8.- Bibliografía.....................................................................................................................................17
Álvaro Pablos Lamas
1.- Formatos para la representación de los números Supongamos que queremos representar el 45 en ASCII: Representamos el 4: 00110100 Representamos el 5: 00110101 45 = 4 5)ASCII = 00110100 – 00110101 Esta forma no es adecuada para introducir datos en el ordenador por dos razones: 1.- Dificulta la realización de operaciones. 2.- Utiliza muchos bits. Por tanto, hay que buscar una representación que facilite las operaciones aritméticas y conserve el valor, podemos emplear el Binario Natural. 45)10=101101)2 La mayoría de los computadores establecen dos formas para la representación de los números, éstas se adaptan básicamente a las características de 2 tipos de números que podemos encontrar en las aplicaciones habituales (ingeniería, ciencia, matemáticas, empresariales, mercadotecnia, etc), los enteros y fraccionarios con pocas de cifras decimales, y los números reales con gran rango dinámico (rango de valores) y precisión de varias decenas de decimales. Los dos formatos son la representación en coma fija, para los números enteros y fraccionarios y representación en coma flotante, para los números reales. Muchos computadores incorporan también la representación decimal (BCD), que se utiliza cuando las operaciones a realizar son bastante sencillas. Esta representación requiere en el nivel de hardware circuitos que ajusten los resultados de las operaciones aritméticas a los valores BCD, aunque esto también se puede realizar por software. Más adelante se estudia la aritmética de los números representados en estos formatos.
2.- Representación en Coma Fija En esta representación la coma o punto decimal está en una posición fija. Esta no ocupa ninguna posición física en la memoria, sino que se establece implícitamente. El tamaño de la representación es de n+m bits, de los cuales los n primeros representan la parte entera del número y los m finales la parte fraccionaria del número. Así el número quedaría: n.m. Dos casos particulares de interés son los que resultan de situar la coma a la derecha y a la izquierda del número representado, esto es, n. (número entero) y .m (número totalmente fraccionario). EJEMPLOS 245.57)10 = 000011110101.1001
10101.110 = 1x24 + 1x23 +1x22 + 0x21 + 1x20 + 1x2-1 + 1x2-2 + 0x2-3 = 21,7510 Álvaro Pablos Lamas
3.- Representación de números enteros con signo Los números enteros pueden ser positivos o negativos. Cuando se representan números enteros sin signo (todos positivos), es decir, naturales, y se utilizan n bits, el rango de valores que se podrán representar está entre 0 y 2n-1; por ejemplo con n=8 bits pueden representarse desde 0 a 255, y con n=16 desde 0 a 65535. Cuando se representan números con signo, se utiliza el bit más significativo para indicar el signo, normalmente con valor 0 para positivo y valor 1 para negativo; el rango de valores representado depende de la forma de representación elegida. Existen tres formas básicas de representar números enteros con signo en coma fija:
3.1.- Magnitud y Signo El bit más significativo se reserva para el signo, y el resto de n-1 bits indican la magnitud o valor del número representado. El rango de valores es el siguiente: [-2n-1+1 , 2n-1-1], así si n=8 se tiene [127,127]. En magnitud y signo el cero tiene dos representaciones, así por ejemplo, con 4 bits se podría representar el 0 como 0000, y el -0 como 1000. Normalmente la segunda no se utiliza. EJEMPLO 1101)MyS = -5)10
3.2.- Complemento a 1 (o complemento a la base menos 1) Los números positivos se representan igual que en magnitud y signo, los negativos se representan mediante el complemento a 1 de sus correspondientes positivos. Para obtener el complemento a 1 de un número en binario basta cambiar en el número los ceros por unos y los unos por ceros. También puede obtenerse restando cada cifra binaria de la base-1 (base-1=1 en caso de b=2). Como en el caso anterior, el 0 tiene dos representaciones, aunque solo se utiliza 0000 (con 4 bits). El rango de valores para n bits varía desde [-2n-1+1 , 2n-1-1]. EJEMPLO 7)10 = 0111)C-1 -5)10 = 1010)C-1
Álvaro Pablos Lamas
3.3.- Complemento a 2 (o complemento a la base menos 2) Los números positivos se representan igual que en magnitud y signo, los negativos se representan mediante el complemento a dos de sus correspondientes positivos. El complemento a dos de un número binario se obtiene cambiando los ceros por unos y los unos por ceros y sumándole 1 o bien, cambiando los unos por ceros y los ceros por unos empezando por la izquierda, hasta llegar al último 1 a partir del cuál se dejará igual incluido éste. El rango de valores que pueden representarse va desde [-2n-1 , 2n-1-1], así para n=8 se tendría [-128,127]. EJERCICIO RESUMEN
4.- Operaciones numéricas en coma fija Vamos a suponer que la coma decimal está situada a la derecha, y que por tanto operamos con números enteros. Veamos como se realizan las operaciones aritméticas en cada una de las representaciones vistas.
4.1.- Suma aritmética de números binarios La suma se realiza como ya conocemos del sistema decimal, bit a bit, de derecha a izquierda, transmitiendo los arrastres o acarreos al siguiente dígito de la izquierda, hasta concluir con todas las cifras. Hay que tener en cuenta que los números pueden tener igual o distinto signo; de hecho pueden presentarse los siguientes casos: a) Ambos sumandos son positivos En este caso la representación en los tres convenios vistos coincide, y la suma se realiza de igual forma en los tres. Si se produce rebose (el bit de signo del número resultante de la suma cambia), significa que el resultado de la suma necesita un bit más para su representación, habría que añadir un cero a la izquierda, éste será el nuevo bit de signo. Tomaremos para los ejemplos números representados con n=8 bits.
Álvaro Pablos Lamas
En las sumas en que el bit de signo cambia es que se ha producido Rebose, esto es, el resultado necesita un bit más (en este caso 9 bits) para poder ser representado correctamente. b) Ambos sumandos son negativos La suma se realiza de forma distinta en cada convenio. También puede producirse rebose, en cuyo caso el bit correspondiente a la posición del signo cambiará. b1) Magnitud y signo Se suman las magnitudes, y se añade el bit de signo al número resultante. Puede producirse rebose (si se produce acarreo final al sumar las magnitudes), lo que significa que el resultado necesita un bit más para poder representarse correctamente. Se suman magnitudes, el signo se añade al resultado. El signo no se opera con el número.
b2) Complemento a 1 El bit de signo debe operarse con el resto del número. Si produce rebose el valor del bit en la posición del signo cambia. Significa que se requiere un bit más para representar el número, se añadirá un bit =1 (signo) al resultado. Por otra parte, el acarreo final, que siempre va existir ya que los dos últimos bits sumados son los de signo que valen 1, debe sumarse al resultado.
Álvaro Pablos Lamas
b2) Complemento a 2 Igual que en el caso anterior el bit de signo también se suma, el acarreo final se desprecia, y si hay rebose, se debe añadir un bit de signo (1) a la izquierda del número.
c) Los números a sumar tienen signos distintos Si tienen signos distintos la operación a realizar es, en realidad, una resta. En caso de magnitud y signo, deben restarse las magnitudes (siempre la de menor magnitud de la mayor) y poner el signo del mayor. En caso de complemento a 1 y complemento a 2 la resta puede realizarse mediante una suma, el número negativo vendrá expresado mediante el complemento a 1 o en complemento a 2 del valor absoluto del número. Estas representaciones son las más comunes, pues ahorran circuitería al no implementarse la resta como una operación distinta de la suma. En cualquier caso, al sumar dos números de distinto signo nunca se va a producir rebose.
c1) Magnitud y Signo Se resta las magnitudes (la menor de la mayor) y se pone el signo del número más grande.
Álvaro Pablos Lamas
c2) Complemento a 1 Se suman los números, incluyendo el signo en dicha operación, el valor resultante en la posición del signo es el signo del resultado. Si hay acarreo final debe sumarse al valor resultante y despreciarse posteriormente. No va a producirse rebose pues se están sumando dos números de signos diferentes y el resultado siempre es menor que cualquiera de las sumandos.
c3) Complemento a 2 Se suman los números, incluyendo el signo en dicha operación, el valor resultante en la posición del signo es el signo del resultado. Si hay acarreo final se desprecia. No va a producirse rebose pues se están sumando dos números de signos diferentes y el resultado siempre es menor que cualquiera de las sumandos.
Álvaro Pablos Lamas
4.2.- Diferencia aritmética de números binarios La resta de dos números enteros presentará los mismos casos que la suma, la única diferencia es que el signo del número que va restado cambiará antes de realizar la operación. Si los números están representados en el formato de M y S pueden darse dos casos: a) Si los números quedan de signo diferente se restan magnitudes (la menor de la mayor) y se pone el signo del mayor. b) Si los números quedan del mismo signo se suman magnitudes y se pone el signo resultante. 1) Magnitud y Signo
2) Complemento a 1 El sustraendo (número que va restado) debe ser negado realizando el complemento a 1 del mismo; posteriormente los números deben ser sumados. Si se produce acarreo final este no se desprecia sino que se suma al resultado. El acarreo, después de sumado, se desprecia.
Álvaro Pablos Lamas
3) Complemento a 2 En complemento a 2 el acarreo se desprecia siempre. Al igual que en el caso anterior, nunca se produce rebose
4.3.- Multiplicación y división Tanto la multiplicación como la división binaria se realizan de la misma forma que la decimal, teniendo en cuenta que la base utilizada es 2. Los signos se tratan por separado.
Álvaro Pablos Lamas
5.- Representación en coma flotante Se caracteriza por tres ideas principales 1.- Método de representación de números reales adaptable al orden de la magnitud del valor a representar . 2.- Se obtiene mayor precisión que con la coma fija. 3.- Permite representar un rango mucho mayor de números (determinado por los valores límite que puede tomar el exponente). Una representación en coma flotante se compone de tres campos:
r = m . be Siendo: r: valor real del número a representar m: mantisa o significando, dígitos significativos del número. b: base del sistema de representación e: exponente, orden de magnitud del significando. El mínimo y máximo valor posible del exponente determinan el rango de valores representables.
5.1.- Rango de representación
Álvaro Pablos Lamas
Ejemplo de operación en coma flotante
5.2.- Formatos de representación en coma flotante IBM 360/370 (simple precisión)
DEC PDP 11/Vax
IEEE754
Álvaro Pablos Lamas
6.- Códigos de detección y corrección de errores Imaginemos necesitamos transmitir 8 símbolos (A,B,C,D,E,F,G,H) y se codifican sin redundancias, se necesitan n=3 bits. Ahora añadimos un bit de redundancia al inicio.
De esta forma si recibimos un código que empiece por 1 podremos afirmar que se ha producido error.
6.1.- TIPOS DE CÓDIGOS DETECTORES 1.- Códigos de control de paridad 1.1.- Paridad par: número par de unos. 1.2.- Paridad impar: número impar de unos. 2.- Códigos de relación constante (cuenta fija de unos). 3.- Otros códigos especiales.
6.2.- DISTANCIA HAMMING La distancia Hamming dH se define entre dos palabras de un código como el número de bits en que difieren dichas palabras. Palabra 1 : 110111 Palabra 2 : 001101 dH (palabra1,palabra2)=4 bits
Álvaro Pablos Lamas
DISTANCIA MÍNIMA HAMMING Se denomina distancia mínima de Hamming Dm a la menor distancia Hamming encontrada, entre todas las palabras que forman un código. Si a un código de distancia mínima 1 se le añade un bit de control de paridad, (por ejemplo se añade un bit para que el número de unos de la palabra siempre sea par) se obtiene un código de distancia mínima 2, con el que puede detectarse error en un bit, aunque no corregirlo.
6.3.-Código Hamming para la detección y corrección de errores El código Hamming se realiza sobre un código ya construido, el cual representa los símbolos del alfabeto fuente utilizando el número de bits (k) estrictamente necesarios para la información, y añadiendo a cada palabra-código los (r) bits de control de paridad. Cada bit control se genera con el valor adecuado (0 o 1) para que exista paridad par en un subconjunto determinado de bits de la palabra Hamming en el que dicho bit de control está incluido. Lo primero que se calcula es el número de bits de control, que se establece a partir de la siguiente relación:
2r ≥ k + r + 1 Una vez determinado el número de bits de control, hay que establecer la posición que ocuparán en la palabra Hamming y calcular el valor que toman para cada palabra código.
7.- INNOVACIÓN: REPRESENTACIÓN CUÁNTICA DE LA INFORMACIÓN Origen de la computación cuántica A medida que evoluciona la tecnología, aumenta la escala de integración y caben más transistores en el mismo espacio; así se fabrican microchips cada vez más pequeños, y es que, cuanto más pequeño es, mayor velocidad de proceso alcanza el chip. Sin embargo, no podemos hacer los chips infinitamente pequeños. Hay un límite en el cual dejan de funcionar correctamente. Cuando se llega a la escala de nanómetros, los electrones se escapan de los canales por donde deben circular. A esto se le llama efecto túnel. Una partícula clásica, si se encuentra con un obstáculo, no puede atravesarlo y rebota. Pero con los electrones, que son partículas cuánticas y se comportan como ondas, existe la posibilidad de que una parte de ellos pueda atravesar las paredes si son demasiado finas; de esta manera la señal puede pasar por canales donde no debería circular. Por ello, el chip deja de funcionar correctamente. En consecuencia, la computación digital tradicional no tardaría en llegar a su límite, puesto que ya se ha llegado a escalas de sólo algunas decenas de nanómetros. Surge entonces la necesidad de descubrir nuevas tecnologías y es ahí donde entra la computación cuántica en escena. La idea de computación cuántica surge en 1981, cuando Paul Benioff expuso su teoría para aprovechar las leyes cuánticas en el entorno de la computación. En vez de trabajar a nivel de voltajes eléctricos, se trabaja a nivel de cuanto. En la computación digital, un bit sólo puede tomar Álvaro Pablos Lamas
dos valores: 0 ó 1. En cambio, en la computación cuántica, intervienen las leyes de la mecánica cuántica, y la partícula puede estar en superposición coherente: puede ser 0, 1 y puede ser 0 y 1 a la vez (dos estados ortogonales de una partícula subatómica). Eso permite que se puedan realizar varias operaciones a la vez, según el número de qubits. El número de qubits indica la cantidad de bits que pueden estar en superposición. Con los bits convencionales, si teníamos un registro de tres bits, había ocho valores posibles y el registro sólo podía tomar uno de esos valores. En cambio, si tenemos un vector de tres qubits, la partícula puede tomar ocho valores distintos a la vez gracias a la superposición cuántica. Así, un vector de tres qubits permitiría un total de ocho operaciones paralelas. Como cabe esperar, el número de operaciones es exponencial con respecto al número de qubits. Para hacerse una idea del gran avance, un computador cuántico de 30 qubits equivaldría a un procesador convencional de 10 teraflops (millones de millones de operaciones en coma flotante por segundo), cuando actualmente las computadoras trabajan en el orden de gigaflops (miles de millones de operaciones). Problemas de la computación cuántica Uno de los obstáculos principales para la computación cuántica es el problema de la decoherencia cuántica, que causa la pérdida del caracter unitario (y, más específicamente, la reversibilidad) de los pasos del algoritmo cuántico. Los tiempos de decoherencia para los sistemas candidatos, en particular el tiempo de relajación transversal (en la terminología usada en la tecnología de resonancia magnética nuclear e imaginería por resonancia magnética) está típicamente entre nanosegundos y segundos, a temperaturas bajas. Las tasas de error son típicamente proporcionales a la razón entre tiempo de operación frente a tiempo de decoherencia, de forma que cualquier operación debe ser completada en un tiempo mucho más corto que el tiempo de decoherencia. Si la tasa de error es lo bastante baja, es posible usar eficazmente la corrección de errores cuánticos, con lo cual sí serían posibles tiempos de cálculo más largos que el tiempo de decoherencia y, en principio, arbitrariamente largos. Se cita con frecuencia una tasa de error límite de 10-4, por debajo de la cual se supone que sería posible la aplicación eficaz de la corrección de errores cuánticos. Otro de los problemas principales es la escalabilidad, especialmente teniendo en cuenta el considerable incremento en qubits necesarios para cualquier cálculo que implica la corrección de errores. Para ninguno de los sistemas actualmente propuestos es trivial un diseño capaz de manejar un número lo bastante alto de qubits para resolver problemas computacionalmente interesantes hoy en día. Hardware para computación cuántica Aún no se ha resuelto el problema de qué hardware sería el ideal para la computación cuántica. Se ha definido una serie de condiciones que debe cumplir, conocida como la lista de Di Vinzenzo, y hay varios candidatos actualmente. Condiciones a cumplir El sistema ha de poder inicializarse, esto es, llevarse a un estado de partida conocido y controlado.
Álvaro Pablos Lamas
Ha de ser posible hacer manipulaciones a los qubits de forma controlada, con un conjunto de operaciones que forme un conjunto universal de puertas lógicas (para poder reproducir cualquier otra puerta lógica posible). El sistema ha de mantener su coherencia cuántica a lo largo del experimento. Ha de poder leerse el estado final del sistema, tras el cálculo. El sistema ha de ser escalable: tiene que haber una forma definida de aumentar el número de qubits, para tratar con problemas de mayor coste computacional.
Álvaro Pablos Lamas
8.- Bibliografía - Introducción a los computadores (Pedro Luis Aguilar Mateos e Isabel García Muñoz) - Código de Hamming - Representación en Coma Fija - Representación en coma flotante VIDEOS - Código de Hamming en clase - Ejercicio de detección y corrección de errores (Hamming) - Odisea: Ordenadores cuánticos - Explicación de la Computación Cuántica - Redes: Ordenadores Cuánticos
Álvaro Pablos Lamas