Sistemas Numericos
Sistemas Numericos
Objetivos
Comprender el manejo de nmeros y operaciones aritmticas desde un lenguaje de programacin de bajo nivel. Repasar los mtodos de representacin numrica de los sistemas: decimal, binario, octal y hexadecimal, para nmeros enteros y fraccionarios. Discutir los mtodos de conversin entre los sistemas numricos de nuestro inters, tanto para nmeros enteros y fraccionarios. Comprender la representacin de nmeros binarios con signo empleando la notacin complemento a 2. Repasar las operaciones aritmticas elementales: suma, resta, multiplicacin y divisin. Establecer claramente el concepto de overflow y su comparacin con el carry. Concepto de punto fijo y flotante. Comprender la necesidad de codificar la informacin. Describir lo mtodos de deteccin y correccin de errores: paridad, checksum, cdigos de redundancia cclica y Hamming.
1 INTRODUCCION
Un microprocesador, como cualquier sistema digital, emplea dos estados (0 y 1) para la representacin de informacin. Cabe recordar que los smbolos 1 y 0 representan esos dos estados y no tienen ningn significado numrico por s mismos. Sin embargo, cuando estos smbolos se utilizan para representar los dgitos del sistema numrico binario, ellos se deben manejar de acuerdo a las reglas del sistema numrico. Por lo tanto, en esta unidad se ver el tratamiento de los sistemas numricos necesario para su implementacin en computadoras. Al final de la unidad veremos la necesidad de codificar la informacin y distintas alternativas para la deteccin y correccin de errores en la transmisin de datos.
2 SISTEMA DE NUMERACIN
Un sistema de numeracin es un conjunto de smbolos y reglas de generacin que permiten construir todos los nmeros vlidos en el sistema. Un sistema de numeracin puede representarse como N = S + R donde:
N es el sistema de numeracin considerado. S son los smbolos permitidos en el sistema. En el caso del sistema decimal son
{0,1...9}; en el binario son {0,1}; en el octal son {0,1...7}; en el hexadecimal son {0,1...9,A,B,C,D,E,F}.
R son las reglas de generacin que nos indican qu nmeros son vlidos y cules son
no-vlidos en el sistema. Estas reglas son diferentes para cada sistema de numeracin considerado, pero una regla comn a todos es que para construir nmeros vlidos en un sistema de numeracin determinado slo se pueden utilizar los smbolos permitidos en ese sistema (para indicar el sistema de numeracin utilizado se aade como subndice al nmero). De una forma general y amplia podemos clasificar los sistemas de numeracin en dos grandes tipos: Posicionales: El valor de los smbolos que componen el sistema depende del valor que se les ha asignado, y de la posicin que ocupan en el nmero (Nmeros decimales). No Posicionales: El valor de los smbolos que componen el sistema es fijo, y no depende de la posicin que ocupa el smbolo dentro del nmero (Nmeros romanos)
El cdigo BCD es la representacin de los 10 dgitos del sistema decimal con 4 bits del sistema binario.
b (base) = 16 d (smbolo) = 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F p=3 y q=2 La utilidad y conversin con el sistema binario es similar al sistema octal, con la nica diferencia que los bits se agrupan de a cuatro. Este sistema es usado como entrada/salida en muchas aplicaciones con microprocesadores, como kits de desarrollo, interfaces, etc., ya que provee un medio eficiente para especificar direcciones, datos e instrucciones (8 y 16 bits).
4 RANGO DE UN NUMERO
Cuando se representan nmeros en una base b y m dgitos, hay bm nmeros posibles en un rango de 0....bm-1. Sea Nb un nmero entero cualquiera, ste tendr un equivalente decimal que caer en el rango 0...bm-1, y podr ser representado exactamente como muestra la Fig. 1.1 Sea: b: base m: nmero de dgitos Entonces habr bm nmeros en el rango [0 ..... bm1 ] Nmeros Enteros |__________|_________|__________| 00 01 10 11 b=2 m=2 Nb = 012 =110
Cuando se trabaja con nmeros fraccionarios hay infinitos nmeros en el intervalo entre 0 y 1, por lo tanto, como m (nmero de dgitos) es finito, nicamente se pueden representar bm fracciones (puntos), siendo el salto entre puntos: @ = b-m (@: Intervalo de resolucin) [2]
|____|____|____|____|____|__....__|____|____| 0 | | 1 @
valor de fraccin que puede ser representado exactamente.
Figura 1.2
Aproximaciones: Para representar una fraccin (punto) que no corresponda a los valores de representacin exacta, ser necesario aproximar. Para ello hay dos formas comunes: Truncacin Redondeo
Sea Fb el valor verdadero del nmero tal cual se expresa a continuacin: Fb = .a-1a-2a-3...a-ma-(m+1)a-(m+2)....a-(m+p)
i i = (m + p)
a *b
[3]
4.1 Truncacin
Se dice que una fraccin es truncada cuando todos los dgitos a la derecha de a-m se desprecian. @ |______...__________|___________.______|________..... 0 fv Fb fv+1 Et Figura 1.3 fv: valor truncado Fb: valor real Et: error por truncacin (Et < b-m) El mximo error cometido (ver Fig 1.3) ser siempre menor que el intervalo de resolucin; es decir: Et < b-m Ejemplo Fb = .23749 fv = .237 m=3 donde fv es el valor truncado.
4.2 Redondeo
Se dice redondeo cuando se selecciona el valor ms prximo al valor deseado, es decir que verifica si el valor se encuentra de la mitad del intervalo de resolucin a la derecha o a la izquierda. Por supuesto, esto requiere una complejidad adicional en el hardware. @ |______...__________|___________.______|________..... 0 fv Fb fv+1 Et Figura 1.4 Er: error por redondeo (Er @/2 ) Fb = .23749 fv = .238 m=3 donde fv es el valor por redondeo.
2. . . . p.
Q0/2 = Q1 + d1 * 2-1 d1=R1: prximo bit . . . donde Qp-1= 0 Qp-2/2 = Qp-1 + Rp-1 dp-1=Rp-1: bit ms significativo.
Ejemplo: N=13 13/2 = 6 6/2 = 3 3/2 = 1 1/2 = 0 y R0=1 y R1=0 y R2=1 y R3=1
1310 = 11012
Nmeros Fraccionarios En este caso se multiplica sucesivamente por dos. Los enteros resultantes son los sucesivos dgitos a la base convertida. N = d-1*2-1 + d-2*2-2 + ... + d-q*2q 1. 2*N = d-1*20 + d-2*2-1 + ... + d-q*2-q+1 |_____| |_________________|
I-1: entero X-1: fraccin
d-1=I-1: bit menos significativo. 2. 2*X-1 = d-2*20 + d-3*2-1 + ... + d-q*2-q+2 |_____| |__________________|
I-2: entero X-2: fraccin
. . q+1.
Ejemplo N=0.55 2*0.55 = 1.1 ---> 2*0.1 = 0.2 ---> 2*0.2 = 0.4 ---> 2*0.4 = 0.8 ---> 2*0.8 = 1.6 ---> 0.5510 = 0.100012
6.1 Representacin
Hay tres formas bsicas de representar nmeros con signo en el sistema binario. Bit de Signo o "Magnitud Signada" Complemento a dos Complemento a uno
Debido a que en el sistema binario no se encuentran otros smbolos ms que 0 y 1, es que se utiliza el bit ms significativo del nmero como signo del nmero. Donde un 0 significa que el nmero positivo, y un 1, que es un nmero negativo.
6.1.1
En esta representacin, para una palabra de n bits, los n-1 bits de la derecha representan la magnitud del nmero y el nmero positivo si comienza con cero (0) y si el mismo empieza con uno (1) el nmero es negativo. Ejemplo: Sea N = 810 = 10002 8 = 01000 -8 = 11000
6.1.2
Complemento a Dos
El complemento (N') de un nmero (N) en una base b se define como: N' = bp N p: nmero de dgitos de N b: base bp: mdulo El mdulo toma distintas denominaciones de acuerdo con el sistema numrico que se emplee. Por ejemplo, para el sistema decimal, se denomina complemento a 10, y para el sistema binario, complemento a 2. Ejemplo N=2010 -----> N' = 100 - 20 = 80 N=10012 -----> N' = 10000 - 1001 = 0111 Es importante notar que el complemento de un nmero depende del mdulo elegido. Hay dos formas de hallar el complemento a dos de un nmero: Hallar el complemento lgico del nmero y luego sumarle 1. 1001 -----> 0110 ------> 0110 + 1 = 0111 Comenzando del bit menos significativo, dejar todos los bits sin cambio hasta el primer 1 inclusive, luego complementar los restantes. [4]
6.1.3
Complemento a Uno
El complemento a 1 (N") de un nmero (N), tambin llamado complemento de base disminuida, no es ms que el complemento lgico del nmero o el complemento a dos menos uno. N" = bp - N - 1
6.1.4
Para representar nmeros con signo en la forma de complemento, se consideran nmeros negativos a aqullos cuyo bit ms significativo es "1", y nmeros positivos a aqullos cuyo bit ms significativo es "0". La diferencia con magnitud-signada, radica en la forma de interpretar los bits restantes. La representacin de nmeros positivos y negativos como complemento, tiene significativas ventajas sobre la representacin bit de signo desde el punto de vista de hardware y de software.
6.1.5
Un nmero entero expresado en complemento a dos tiene la siguiente expresin: N = -d7*27 + . . . + di*2i Un nmero fraccionario expresado en complemento a dos tiene la siguiente expresin: N = -d0*20 + . . . . + d-i*2-i La representacin en una recta sera:
1001 1000 1011 1101 1111 0001 0000 0011 0101 0111
[5]
[6]
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1010 1100 1110 0010 0100 0110
-8 -7 -6 -5 -4 -3 -2 -1 0
1 2
3 4 5 6
Sea p el nmero de bits incluido el bit de signo, entonces habr 2p nmeros posibles siendo el rango de variacin de nmeros: -2p-1 <= N <= 2p-1 -1 6.1.6 Nmeros en Complemento a Uno
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1010 1110 0000 0010 0100
-7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5
6 7
Sea p el nmero de bits incluido el bit de signo, entonces habr 2p nmeros posibles siendo el rango de variacin de nmeros: -(2p-1-1) <= N <= 2p-1 -1
Uno de los inconvenientes de esta representacin es que tiene dos formas de representar el cero. Esto requiere de interpretaciones adicionales de los resultados para la toma de decisiones.
6.1.7
Se pueden mencionar tres razones principales por las cuales la eleccin de la representacin en complemento a dos es la ms adecuada: 1. El hardware aritmtico es ms simple que en bit de signo y no mucho ms complejo que en complemento a uno. 2. En complemento a uno y bit de signo existen dos formas de representar al cero (existe un +0 y un -0). Esto causa ciertos problemas en el hardware para la toma de decisiones, por ejemplo saltar si el resultado es negativo. 3. Hay resultados incorrectos en complemento a uno y bit de signo que se deben corregir. Ejemplo:(-107)+(-10)= =-117
6.2.1
La suma de M + N produce:
N 0 0 1 1 M 0 1 0 1 ___________________________ S 0 1 1 10 transporte (carry) Las funciones lgicas que implementan la operacin suma con la generacin de su respectivo carry son: S = X + Y = X XOR Y Cy = X AND Y
El carry se produce cuando se supera la capacidad del dgito (en la base que se trabaje 1: binaria, 9: decimal) en una columna (peso) determinada. Cuando se trabaja con computadoras no se puede tener infinitos bits de representacin de nmeros. Es decir, que los nmeros se representan por n bits (generalmente 4, 8, 16, 32 bits). Por lo tanto el flag de carry indica que tuve un desborde en el rango de representacin de los nmeros naturales (sin signo). Si el mximo rango de representacin de nmeros con signos (positivos o negativos) se excede, el flag de carry no nos brinda informacin de desborde del rango de representacin. Cuando se trabaja con nmeros enteros (con signo), la condicin de desborde se indica con un flag denominado "overflow" (si se desbordan los nmeros positivos) o "underflow" (si se desbordan los nmeros negativos). [Link] Suma en Complemento a Dos En complemento a dos, con (n+1) bits se pueden representar nmeros en el rango de (2n 1) a (-2n). Por ejemplo, con 8 bits el rango es de +127 a -128. Por lo tanto, cualquier operacin que exceda dicho rango producir "overflow".
Condiciones para la Deteccin de Overflow Se analizarn cuatro casos testigos, que permiten encontrar cules son las condiciones en las que se produce overflow, y as poder generalizarlo. 0110 (+6) 0110 (+6) 1001 (-7) + + + + 0011 (+3) 0001 (+1) 1101 (-3) ------ ---- ------ ---- ------ ---0 1001 -7 0 0111 +7 1 0110 +6 C=0 Cs=1 donde: C : es el carry Cs: es el carry al bit de signo (bit2 bit3) C=0 Cs=0 C=1 Cs=0 1010 (-6) 1111 (-1) ------ ---1 1001 -7 C=1 Cs=1
Por lo tanto, ocurre overflow si y slo si la suma de dos nmeros de igual signo produce un nmero de signo opuesto. C 0 0 1 1 Cs 0 1 0 1 V 0 1 1 0
Cs XOR C = V
Otra forma de determinar el overflow (V) es: Z XOR C. Sin embargo es necesario verificar previamente los signos de los operandos.
6.2.2
R = M - N = M XOR N B = /M AND N donde: M: minuendo N: sustraendo Si trabajamos con nmeros naturales, el "borrow" significa que el minuendo es menor que el sustraendo, y se debe "pedir prestado" a la prxima columna. Una de las mayores ventajas de usar complemento, es que la resta se lleva a cabo tomando el complemento del sustraendo y luego se realiza la suma de los mismos. Es decir, se podra simplificar el hardware. M - N = M + (comp N) Ejemplo: 1100 (-4) 1100 (-4) + 0110 (+6) 1010 (-6) -----------0 0110 -10 1 0110 -10
[Link] Relaciones Overflow/Underflow Carry/Borrow Se analizarn distintos casos que permitirn establecer relaciones entre los flags Overflow/Underflow Carry/Borrow resultantes de operaciones de resta entre 2 nmeros enteros.
0100 (+4) 0100 (+4) + 1011 (-5) 0101 (+5) ------ --------- ---1 1001 +9 0 1001 +9 B=1 Bs=0 C=0 Cs=1
1100 (-4) 0110 (+6) ------ ---0 0110 -10 B=0 Bs=1 +
1100 (-4) 1010 (-6) ------ ---1 0110 -10 C=1 Cs=0
donde: C : carry Cs: carry al bit de signo (bit2 ---> bit3) B : borrow Bs: borrow del bit de signo (bit3 ----> bit2) Analizando los cuatro casos del ejemplo anterior se puede deducir que el borrow es el carry complementado y que el overflow es: V' = /B XOR /Bs = C XOR Cs = V donde: V: es el overflow (denominado underflow ) que se produce en la resta. Por lo tanto, los circuitos que detectan el overflow en la suma tambin lo harn en la resta. En general, los procesadores utilizan el mismo bit para representar el carry y el borrow. Esto se debe a que son complementarios.
6.3.1
Suma
Para realizar la suma se procede en igual forma que en simple precisin, con la nica diferencia que la parte ms significativa se debe sumar agregando el carry de la operacin anterior.
6.3.2
Resta
Para realizar la resta se procede en igual forma que en simple precisin, con la nica diferencia que la parte ms significativa se debe restar teniendo en cuenta el borrow anterior. Una forma alternativa de implementarla sera complementar el sustraendo, y proceder como en el caso de la suma. 1 0001 + 1110 0000 1001 + 1110 0111 (-18) 07 (25)
Con respecto a las condiciones de overflow, valen las mismas reglas que en el caso de simple precisin.
6.4
Operaciones en BCD
El cdigo BCD es la representacin de los 10 dgitos del sistema decimal con 4 bits del sistema binario. Esta representacin genera un conjunto de 6 valores no permitidos, que requiere que algunos resultados de operaciones aritmticas sean corregidos.
6.4.1
Suma en BCD
Los smbolos BCD son 0...9, por lo tanto, con 4 bits de representacin, los smbolos A...F no son vlidos. Esto quiere decir que al realizar operaciones aritmticas ser necesario hacer algunas correcciones al resultado. Veremos los tres casos resultantes de una operacin de suma aritmtica: I. 0110 (6) + 0010 (2) 0 1000 (8) correcto [0] [8] II. 0110 (6) + 0111 (7) 0 1101 (13) incorr. + 0110 (6) 1 0011 [1] [3] correcto III. 1001 (9) + 1001 (9) 1 0010 (18) incorr. + 0110 (6) 1 1000 [1] [8] correcto
El caso I. es el nico resultado correcto, por lo tanto no necesita ningn tipo de correccin. Los casos II. y III. Dan resultados incorrectos, por lo tanto es necesario adicionarle 6 para obtener el valor correcto. Resumiendo, hay dos casos de ajuste decimal de la suma de dos nmeros A y B: si A + B 10 con carry = 0 si A + B < 10 con carry = 1
Para usar BCD con signo ser necesario usar un bit adicional (en un lugar de memoria) para llevar el signo.
6.4.2
Resta BCD
Hay dos formas posibles para realizar la resta BCD: a. Realizar un hardware que realice la resta decimal con borrow. b. Hallar el complemento a 10 del sustraendo en BCD y luego sumarlos. Para hallar el complemento a 10 de un nmero BCD de dos dgitos se puede hacer lo siguiente: a. Obtener el complemento a dos de cada dgito individualmente, sin tener en cuenta el carry. b. Sumar al dgito menos significativo 1010, y al ms significativo, 1001. Ejemplo 0010 0110 (26) 1110 1010 + 1001 1010 0111 1010 complemento a 2 individual
7410
donde: N: es la mantisa r: es la base p: es el exponente Dado un nmero fijo de bits para la representacin en FP, existe un compromiso entre rango y precisin: Cuando mayor es el rango, menor es la precisin. Formato Actualmente la Sociedad del IEEE propuso el estndar P754 para aritmtica en FP para nmeros binarios. Este estndar especifica los formatos de nmeros en FP, los resultados de las operaciones en FP, conversin de nmeros, etc. Un nmero en FP se representa como una cadena de bits compuesta por tres componentes bsicos: Signo de la mantisa (s) Mantisa (l.f) Exponente entero con signo (e) En algunos casos se considera un cuarto campo que corresponde al signo del exponente. Bit: s Exponente (e) 1 Fraccin (f) . 0 1 8 9 10 31
Si s = 0 el nmero es positivo y si s = 1, es negativo. El exponente e es la potencia de 2 que determina el rango del nmero. Y la mantisa, (l.f), determina la precisin del nmero. La mayor exactitud se logra cuando l = 1. De esta forma, cualquier nmero, distinto de cero, se puede expresar como: 2e * (1.f) Exponente El exponente de un nmero binario en FP puede ser: