Descargar la presentación
La descarga está en progreso. Por favor, espere
1
Aritmética en computadora
2
Objetivos Cómo ejecuta el hardware las operaciones básicas (suma, resta, división y multiplicación). Operaciones con números enteros. Operaciones con números reales. Universidad de Sonora
3
Suma Sumar 7 más 6: Hay que tomar en cuenta los acarreos:
Universidad de Sonora
4
Resta Restar 7 – 6. Se puede hacer directo:
O se puede usar una suma, recordando que 7 – 6 = 7 + (-6): En conclusión, la resta se puede hacer con una suma. Universidad de Sonora
5
Pero… Por cuestiones de eficiencia las sumas no se hacen bit a bit (sumador de ripple carry). Si dos bits se pueden sumar en un ciclo de reloj, dos números de n bits necesitan al menos 2n ciclos (un ciclo para la suma y otro para pasar el carry al siguiente paso). Hay algoritmos para hacer sumas rápidas. El más común se llama sumador de carry-lookahead (carry adelantado). Universidad de Sonora
6
Comparación Un sumador de 16 bits de ripple-carry necesita 32 ciclos.
Un sumador de 16 bits de carry-lookahead necesita 5 ciclos. Universidad de Sonora
7
Full adder Entrada: dos número de n bits y un carry inicial de 1 bit.
Salida: una suma de n bits, un carry final de 1 bit y un indicador de overflow de 1 bit. Fuente: COD 5, p. B-27 Universidad de Sonora
8
Multiplicación Algoritmo clásico o multiplicación larga
Algoritmo del campesino Algoritmo de quarter square (cuartos al cuadrado) Algoritmo de Karatsuba Universidad de Sonora
9
Multiplicación Multiplicación larga Universidad de Sonora
10
Algoritmo Universidad de Sonora
11
Ejemplo Multiplicar 3 x 2 Universidad de Sonora
12
Números con signos distintos
Multiplicar 3 x (-2). Se le quita el signo al -2 y se guarda en alguna variable. Se multiplica 3 x 2 usando el algoritmo ya visto. Se multiplica el resultado por -1 para obtener -6. Universidad de Sonora
13
Algoritmo del campesino
Sean x y y dos números. i = 0 X[i] = x Y[i] = y x = x / 2 x >> 1 y = y * 2 y << 1 i++ if x > 1 goto 2 x.y = suma de Y[i] en donde X[i] sea impar Universidad de Sonora
14
Ejemplo en base 10 Obtener 24 x 5: X[i] Y[i] 24 5 12 10 6 20 3 40 1 80
24 5 12 10 6 20 3 40 1 80 El producto es = 120. Los demás se ignoran porque X[i] es par. Universidad de Sonora
15
Ejemplo en base 2 Obtener 11000 (24) x 101 (5): X[i] Y[i] 11000 101
El producto es la suma de las Y[i] en donde X[i] sea impar: = (120). Universidad de Sonora
16
Algoritmo de quarter square
Basado en la siguiente igualdad: Universidad de Sonora
17
Algoritmo de quarter square
El algoritmo es eficiente si los quarter squares se guardan en tablas. Ejemplo: Calcular 9 x 3. Se obtiene = 12 y 9 – 3 = 6. Se buscan en la tabla y se restan. 36 – 9 = 27. n 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |n2/4| 20 25 30 36 42 49 56 64 72 81 Universidad de Sonora
18
Algoritmo de quarter square
Implementaciones: En hardware en 1980 por E.L. Johnson (ver E.L. Johnson, "A Digital Quarter Square Multiplier", IEEE Transactions on Computers, vol. 29, pp , March 1980, En la CPU 6502 en 1995 por S. Judd (ver Universidad de Sonora
19
Algoritmo de Karatsuba
Sean x y y números de n dígitos en base B. Se desea calcular el producto xy. x y y se escriben de la siguiente forma: x = x1Bm + x0 y = y1Bm + y1 Por ejemplo 7425 en base 10 es: 7 x x1 = 7, x0 = 425 Universidad de Sonora
20
Algoritmo de Karatsuba
El producto xy se obtiene así: xy = (x1Bm + x0)(y1Bm + y0) = z2B2m + z1Bm + z0 donde: z2 = x1y1 z1 = x1y0 + x0y1 z0 = x0y0 z1 se puede también escribir: z1 = (x1 + x0)(y1 + y0) – z2 – z0 Universidad de Sonora
21
Algoritmo de Karatsuba
El producto se puede también escribir así: xy = (b2 + b)x1y1 – b(x1 – x0)(y1 – y0) + (b + 1)x0y0 Con b = Bm. Ahora se requieren 3 multiplicaciones. Ventajas: [x1|y1] << [x|y], [x0|y0] < [x|y] Los 3 productos se pueden hacer de forma recursivas. Al final se hacen productos de un dígito. Universidad de Sonora
22
Algoritmo de Karatsuba
Para números de n bits, la complejidad: Multiplicación larga es O(n2). Algoritmos de Karatsuba es O(nlog2 3 n1.6) Para números de 32 bits: 322 = 1024 32log2 3 = 243 Speedup = 1024 / 243 = 4.21 Universidad de Sonora
23
Algoritmo de Karatsuba
Para números de 1024 bits (usados en encriptación): 10242 = 1,048,576 1024log2 3 = 59,049 Speedup = / = 17.76 En 2011 Intel patentó un algoritmo basado en el de Karatsuba: Universidad de Sonora
24
Comparación Multiplicación larga vs Karatsuba.
Fuente: Universidad de Sonora
25
División Método restoring.
Método non-restoring (tema para un curso avanzado). Universidad de Sonora
26
División Nomenclatura: Universidad de Sonora
27
División Nomenclatura alterna: Universidad de Sonora
28
Método restoring Ejemplo: Obtener 4537 / 3 en base 10.
4537 tiene 4 dígitos numerados 3, 2, 1,0. 4537 – 3 x 103 = q3 = 1 1537 – 3 x 103 = q3 = 2 x 103 = restaura q3 = 1 1537 – 3 x 102 = q2 = 1 1237 – 3 x 102 = q2 = 2 937 – 3 x 102 = q2 = 3 Universidad de Sonora
29
Método restoring 637 – 3 x 102 = 337 q2 = 4 337 – 3 x 102 = 37 q2 = 5
x 102 = 37 restaura q2 = 5 37 – 3 x 101 = q1 = 1 7 – 3 x 101 = q1 = 2 x 101 = restaura q1 = 1 7 – 3 x 100 = q0 = 1 4 – 3 x 100 = q0 = 2 Universidad de Sonora
30
Método restoring 1 – 3 x 100 = -2 q0 = 3
x 100 = restaura q0 = 2 El cociente está en las qi restauradas (en rojo). El residuo está en la última operación (en verde). 4537 / 3 = 1512 (división entera). 4537 % 3 = 1 (módulo). Universidad de Sonora
31
Método restoring Ejemplo:
Obtener / 11 en base 2 (29 / 3 en base 10). 11101 tiene 5 dígitos numerados 4, 3, 2, 1, 0. 29 – 3 x 24 = q4 = 1 x 24 = restaura q4 = 0 29 – 3 x 23 = q3 = 1 5 – 3 x 23 = q3 = 2 x 23 = restaura q3 = 1 5 – 3 x 22 = q2 = 1 Universidad de Sonora
32
Método restoring -7 + 3 x 22 = 5 restaura q2 = 0
5 – 3 x 21 = q1 = 1 x 21 = restaura q1 = 0 5 – 3 x 20 = q0 = 1 2 – 3 x 20 = q0 = 2 x 20 = restaura q0 = 1 Conclusión: 11101 / 11 = 1001 (29 / 3 = 9) 11101 % 11 = 10 (29 % 3 = 2) Universidad de Sonora
33
Método restoring en Java
// Enteros positivos de 16 bits: public Point restoring(int n, int d) { int q = 0; // Cociente int p = n; // Residuo d = d << 16; for (int i = 15; i >= 0; i--) { p = 2 * p - d; if (p >= 0) { q |= 1 << i; } else { p = p + d; return new Point(q, p >> 16); Universidad de Sonora
34
Conclusión de la división
El método restoring es fácil de entender e implementar. Los métodos non-restoring (son una familia) son más eficientes de implementar en hardware. Uno de los métodos más usados es la división SRT (Sweeney, Robertson, Tocher), el cuál es non-restoring. Universidad de Sonora
35
Números de punto flotante
Suma Resta Multiplicación División Universidad de Sonora
36
Suma Para sumar dos números normalizados en notación científica:
Alinear los exponentes. Hacer la suma. Normalizar si es necesario. Redondear. Universidad de Sonora
37
Suma Ejemplo: sumar x x 10-1 en base 10 con cuatro dígitos. Paso 1: alinear los exponentes. Se mueve el punto decimal del número con el exponente más pequeño. 1.610 x 10-1 se convierte en x 101. Paso 2: hacer la suma: Universidad de Sonora
38
Suma La suma es 10.015 x 101. Paso 3: normalizar.
9.999 10.015 La suma es x 101. Paso 3: normalizar. x 101 = x 102. Paso 4: redondear a 4 dígitos. 9.999 x x 10-1 = x 102. Universidad de Sonora
39
Suma Fuente: COD 5, p. 205 Universidad de Sonora
40
Precisión Ejemplo: hacer 2.56 x x 102 en base 10 con 3 dígitos. Paso 1: alinear los exponentes. 2.56 x 100 se convierte en 0.02 x 102 con tres dígitos. Se perdió precisión. El standard IEEE 754 define dos bits extras, llamados guard y round, para cálculos intermedios. Universidad de Sonora
41
Precisión En realidad los números se guardan cómo x x 102. Paso 1: alinear los exponentes. x 100 se convierte x 102. Paso 2: hacer la suma 2.3400 2.3656 Universidad de Sonora
42
Precisión Paso 3: normalizar. 2.3656 x 102 ya está normalizado.
Paso 4: redondear a 3 dígitos. 2.37 x 102 2.56 x x 102 = 2.37 x 102. Universidad de Sonora
43
Algoritmo para sumar Se usa el mismo algoritmo que para números enteros. En el standard IEEE 754 la mantisa está guardada como un número binario entero. Fuente: Wikipedia ( Universidad de Sonora
44
Resta La resta se convierte en suma al poner el segundo número en complemento a 2. Universidad de Sonora
45
Multiplicación Para multiplicar dos números normalizados en notación científica: Sumar los exponentes. Multiplicar las mantisas. Normalizar si es necesario. Redondear. Universidad de Sonora
46
Multiplicación Ejemplo: multiplicar x 1010 por x 10-5 en base 10 con 4 dígitos en la mantisa y 2 en el exponente. Paso 1: sumar los exponentes. 10 + (-5) = 5. Paso 2: multiplicar las mantisas. Universidad de Sonora
47
Multiplicación 1.100 x 9.200 ------- 0000 2200 9990 --------- 10212000
Se le pone el punto decimal Universidad de Sonora
48
Multiplicación Paso 3: normalizar.
x 105 se normaliza a x 106. En este punto se checa si hay overflow o underflow. Paso 4: redondear. x 106 se convierte en x 106 con 4 dígitos para la mantisa. Universidad de Sonora
49
Algoritmo para multiplicar
Se puede usar cualquiera de los algoritmos vistos para multiplicar números enteros. Universidad de Sonora
50
División Para dividir dos números normalizados en notación científica:
Restar los exponentes. Dividir las mantisas. Normalizar si es necesario. Redondear. Universidad de Sonora
51
División Ejemplo: dividir x 100 entre x 102 en base 10 con 3 dígitos en la mantisa. Paso 1: restar los exponentes. 0 – 2 = -2. Paso 2: dividir las mantisas. 7.152 / = Paso 3: normalizar. El cociente ya está normalizado. Universidad de Sonora
52
División Paso 4: redondear.
= con 3 dígitos en la mantisa. Conclusión: 7.152 x 100 entre x 102 = x 10-2. Universidad de Sonora
53
Algoritmos de división
Se pueden usar los algoritmos de división entera. Pero hay que tener cuidado con la interpretación de los resultados. La división entera entrega el cociente y el residuo (módulo) por separado. En la división de punto flotante solo interesa el cociente (número de punto flotante) con cierta precisión. Universidad de Sonora
54
Algoritmos de división
Por ejemplo, al dividir / nos interesa que el resultado sea y no que el resultado sea cociente = 19, residuo = Una opción es la división Newton-Raphson. Universidad de Sonora
55
División Newton-Raphson
Se desea calcular a / b. Calcular 1 / b usando Newton-Raphson. Multiplicar a x (1 / b). Universidad de Sonora
56
Newton-Raphson Es un método para encontrar raíces de una función (x:f(x) = 0). Dada f(x), la derivada f’(x) y un valor inicial x0 para la raíz de f, una mejor aproximación es: Se repite el proceso: Universidad de Sonora
57
Newton-Raphson Para obtener 1 / b, se utiliza:
Sustituyendo lo anterior en la ecuación general: Universidad de Sonora
58
Newton-Raphson Universidad de Sonora
59
Ventaja Convergencia cuadrática. Ejemplo: calcular 1 / 4 con x0 = 0.2.
0.24 x2 0.2496 x3 x4 x5 0.25 Universidad de Sonora
60
Desventaja Si x0 no es una buena aproximación, el método diverge.
Ejemplo: calcular 1 / 4 con x0 = 0.51. x0 0.51 x1 x2 … x9 E8 x10 E16 x15 -Infinity Universidad de Sonora
61
Solución Tomar ventaja de que los números están normalizados:
En base 10, 1 ≤ mantisa < 10. En base 2, 1 ≤ mantisa < 2. Guardar en una tabla (o en una ROM para implementaciones en hardware) algunos inversos. Por ejemplo, para base 10. Universidad de Sonora
62
Solución Para calcular 1 / 8.25: Se toma la parte entera, 8.
Índice Inverso 1.0000 1 0.5000 2 0.3333 3 0.2500 4 0.2000 5 0.1667 6 0.1429 7 0.1250 8 0.1111 Para calcular 1 / 8.25: Se toma la parte entera, 8. Se usa ROM[7] como x0. Universidad de Sonora
63
Solución 1 / 8.25. x0 0.125 x1 x2 x3 x4 Universidad de Sonora
64
División Newton-Raphson
Para leer sobre una implementación en hardware. Gaurav Agrawal, Ankit Khandelwal. A Newton Raphson Divider Based on Improved Reciprocal Approximation Algorithm. Universidad de Sonora
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.