Aritmetica del computador

37
Aritmética de la computadora Jose Juan Meza Espinosa 1 Organización y Organización y arquitectura de arquitectura de computadoras computadoras Capítulo 8 Capítulo 8 Aritmética de la Aritmética de la computadora computadora

Transcript of Aritmetica del computador

Page 1: Aritmetica del computador

Aritmética de la computadora

Jose Juan Meza Espinosa 1

Organización y arquitectura de Organización y arquitectura de computadorascomputadoras

Capítulo 8Capítulo 8

Aritmética de la computadoraAritmética de la computadora

Page 2: Aritmetica del computador

Aritmética de la computadora

Arquitectura de computadoras

2

Unidad aritmética y lógicaUnidad aritmética y lógica

Hace los cálculosHace los cálculos El resto de los elementos de la computadora El resto de los elementos de la computadora

están para suministrar datos a la ALUestán para suministrar datos a la ALU– UDC, Registros, Memoria, E/SUDC, Registros, Memoria, E/S

Maneja enterosManeja enteros Puede menajar números de punto flotante Puede menajar números de punto flotante

(reales)(reales) Puede ser una FPU separada (coprocesador Puede ser una FPU separada (coprocesador

matemático)matemático)

Page 3: Aritmetica del computador

Aritmética de la computadora

Arquitectura de computadoras

3

ALU Entradas y salidasALU Entradas y salidas

ALU

UnidadDe control

Registros

Banderas

Registros

Page 4: Aritmetica del computador

Aritmética de la computadora

Arquitectura de computadoras

4

Representación de enterosRepresentación de enteros

Solo tenemos 0 y 1 para representar todoSolo tenemos 0 y 1 para representar todo Números positivos almacenados en binarioNúmeros positivos almacenados en binario

– ejemplo. ejemplo. 43=0010101143=00101011 No hay signo menosNo hay signo menos No hay puntosNo hay puntos

Representación de positivos y negativosRepresentación de positivos y negativos– Signo-MagnitudSigno-Magnitud

– Complemento a dosComplemento a dos

Page 5: Aritmetica del computador

Aritmética de la computadora

Arquitectura de computadoras

5

Signo-MagnitudSigno-Magnitud

El bit de la izquierda es el bit de signoEl bit de la izquierda es el bit de signo– 00 significa positivo significa positivo– 11 significa negativo significa negativo– +18 = 00010010+18 = 00010010– -18 = 10010010-18 = 10010010

ProblemasProblemas– Se necesita considerar signo y magnitUd en la Se necesita considerar signo y magnitUd en la

aritméticaaritmética– Dos representaciones del cero (Dos representaciones del cero (+0+0 y y -0-0))

Page 6: Aritmetica del computador

Aritmética de la computadora

Arquitectura de computadoras

6

Complemento a dosComplemento a dos

+3 = 00000011+3 = 00000011 +2 = 00000010+2 = 00000010 +1 = 00000001+1 = 00000001 +0 = 00000000+0 = 00000000 -1 = 11111111-1 = 11111111 -2 = 11111110-2 = 11111110 -3 = 11111101-3 = 11111101

Page 7: Aritmetica del computador

Aritmética de la computadora

Arquitectura de computadoras

7

BeneficiosBeneficios

Una representación del ceroUna representación del cero La aritmética es fácilLa aritmética es fácil Negar es no tan fácilNegar es no tan fácil

– 3 = 000000113 = 00000011– Complemento booleanoComplemento booleano 1111110011111100– Agregar Agregar 11 al LSB al LSB 1111110111111101

Page 8: Aritmetica del computador

Aritmética de la computadora

Arquitectura de computadoras

8

Negación caso especial 1Negación caso especial 1

0 =0 = 0000000000000000 Negación bit a bitNegación bit a bit 1111111111111111 Agrega 1 al LSBAgrega 1 al LSB +1+1 Resultado Resultado 1 000000001 00000000 Se ignora el overflow, tal:Se ignora el overflow, tal: - 0 = 0- 0 = 0

Page 9: Aritmetica del computador

Aritmética de la computadora

Arquitectura de computadoras

9

Negación caso especial 2Negación caso especial 2

-128 =-128 = 1000000010000000 Negación de bitsNegación de bits 01111111 01111111 Suma 1 al LSBSuma 1 al LSB +1 +1 ResultadoResultado 10000000 10000000 Tal que: Tal que: -(-128) = -128-(-128) = -128

Page 10: Aritmetica del computador

Aritmética de la computadora

Arquitectura de computadoras

10

Rango de númerosRango de números

8 bits complemento a 28 bits complemento a 2– +127 = 01111111 = 2+127 = 01111111 = 277-1-1– -128 = 10000000 = -2-128 = 10000000 = -277

16 bits complemento a 216 bits complemento a 2– +32767 = 011111111 11111111 = +32767 = 011111111 11111111 = 221515 - 1 - 1

– -32768 = 100000000 00000000 = --32768 = 100000000 00000000 = -221515

Page 11: Aritmetica del computador

Aritmética de la computadora

Arquitectura de computadoras

11

Conversión entre longitudesConversión entre longitudes

Números positivos con ceros a la izquierdaNúmeros positivos con ceros a la izquierda– +18 = 00010010+18 = 00010010– +18 = 00000000 00010010+18 = 00000000 00010010

Números negativos con unos a la izquierdaNúmeros negativos con unos a la izquierda– -18 = 10010010-18 = 10010010– -18 = 11111111 10010010-18 = 11111111 10010010

Page 12: Aritmetica del computador

Aritmética de la computadora

Arquitectura de computadoras

12

Suma y restaSuma y resta

Suma binaria normalSuma binaria normal El bit de signo monitorea el overflowEl bit de signo monitorea el overflow

Hacer el complemento a dos del substraendo y Hacer el complemento a dos del substraendo y súmalo al minuendosúmalo al minuendo– ejemplo. a - b = a + (-b)ejemplo. a - b = a + (-b)

Sólo necesitamos circuitería para la suma y el Sólo necesitamos circuitería para la suma y el complementocomplemento

Page 13: Aritmetica del computador

Aritmética de la computadora

Arquitectura de computadoras

13

Hardware para suma y restaHardware para suma y resta

Registro B

Complementador

Sumador

Registro A

OF

Page 14: Aritmetica del computador

Aritmética de la computadora

Arquitectura de computadoras

14

MultiplicaciónMultiplicación

ComplejaCompleja Generación de productos parcialesGeneración de productos parciales

– uno para cada dígito del multiplicadoruno para cada dígito del multiplicador Tener cuidado con donde ponemos cada Tener cuidado con donde ponemos cada

valor (en que columna)valor (en que columna) Sumar productos parcialesSumar productos parciales

Page 15: Aritmetica del computador

Aritmética de la computadora

Arquitectura de computadoras

15

Ejemplo de multiplicaciónEjemplo de multiplicación

1011 Multiplicando (11 dec)

x 1101 Multiplicador (13 dec)

1011

0000 Productos parciales

1011

1011

10001111 Producto (143 dec)

Page 16: Aritmetica del computador

Aritmética de la computadora

Arquitectura de computadoras

16

Diagrama de bloques para la Diagrama de bloques para la multiplicación binaria sin signomultiplicación binaria sin signo

An-1 • • • A0

Sumador de n- bits

Mn-1 • • • M0

Lógica de control deDesplazamientos y sumas

Qn-1 • • • Q0C

Sumar

Desplazar a la derecha

Multiplicador

Page 17: Aritmetica del computador

Aritmética de la computadora

Arquitectura de computadoras

17

Ejemplo de la ejecuciónEjemplo de la ejecución

C A Q M

0 0000 1101 1011 Valores iniciales

0 1011 1101 1011 Suma

0 0101 1110 1011 Desplazamiento

0 0010 1111 1011 Suma

0 1101 1111 1011 Suma

0 0110 1111 1011 Desplazamiento

1 0001 1111 1011 Suma

0 1000 1111 1011 Desplazamiento

Primer Ciclo

Segundo Ciclo

Tercer Ciclo

Cuarto Ciclo (Producto en A, Q)

Page 18: Aritmetica del computador

Aritmética de la computadora

Arquitectura de computadoras

18

Diagrama de flujo para la Diagrama de flujo para la multiplicación de binarios sin multiplicación de binarios sin

signosignoInicio

C,A 0M MultiplicandoQ MultiplicadorCuenta n

¿Q0=1?

C,A A + M

Desplazar C, A, QCuenta Cuenta -1

¿Cuenta=0?

Fin

Si

Si

No

No

Page 19: Aritmetica del computador

Aritmética de la computadora

Arquitectura de computadoras

19

Multiplicando números negativosMultiplicando números negativos

¡Lo anterior no funciona! ¡Lo anterior no funciona! Solución 1Solución 1

– Convertir a positivo si se requiereConvertir a positivo si se requiere– Multiplica como se hizo anteriormenteMultiplica como se hizo anteriormente– Si los signos fueron diferentes, negar el Si los signos fueron diferentes, negar el

resultadoresultado

Solución 2Solución 2– El algoritmo de BoothEl algoritmo de Booth

Page 20: Aritmetica del computador

Aritmética de la computadora

Arquitectura de computadoras

20

Algoritmo de BoothAlgoritmo de Booth

Inicio

A 0, Q-1 0M MultiplicandoQ MultiplicadorCuenta n

¿Q0,Q-1?

A A + M A A - M

¿Cuenta=0?Fin

Si

=01

No

=10

DesplazamientoAritmético a Derecha: A, Q, Q-1

Cuenta Cuenta -1

=11=00

Page 21: Aritmetica del computador

Aritmética de la computadora

Arquitectura de computadoras

21

Ejemplo de la ejecuciónEjemplo de la ejecución

A Q Q-1 M

0000 0011 0 0111 Valores iniciales

1001 0011 0 0111 A A - M

1100 1001 1 0111 Desplazamiento

1110 0100 1 0111 Desplazamiento

0101 0100 1 0111 A A + M

0010 1010 0 0111 Desplazamiento

0001 0101 0 0111 Desplazamiento

Primer Ciclo

Segundo Ciclo

Tercer Ciclo

Cuarto Ciclo (Producto en A, Q)

Page 22: Aritmetica del computador

Aritmética de la computadora

Arquitectura de computadoras

22

DivisiónDivisión

Más compleja que la multiplicaciónMás compleja que la multiplicación Los números negativos son más Los números negativos son más

complicados!complicados! Se basa en la división largaSe basa en la división larga

Page 23: Aritmetica del computador

Aritmética de la computadora

Arquitectura de computadoras

23

División de números binarios sin División de números binarios sin signosigno

001111

1011

00001101

100100111011001110

1011

1011100

Cociente

Dividendo

Residuo

ResiduosParciales

Divisor

Page 24: Aritmetica del computador

Aritmética de la computadora

Arquitectura de computadoras

24

Números realesNúmeros reales

Números con fraccionesNúmeros con fracciones Podrían representrase en binario puroPodrían representrase en binario puro

– 1001.1010 = 21001.1010 = 244 + 2 + 200 +2 +2-1-1 + 2 + 2-3 -3 =9.625=9.625

¿Dónde está el punto binario?¿Dónde está el punto binario? ¿Fijo?¿Fijo?

– Muy limitadoMuy limitado

¿Moviendolo?¿Moviendolo?– ¿Cómo sabemos dónde está?¿Cómo sabemos dónde está?

Page 25: Aritmetica del computador

Aritmética de la computadora

Arquitectura de computadoras

25

Punto flotantePunto flotante

+/- .mantisa x 2+/- .mantisa x 2exponenteexponente

El punto está fijo entre el bit de signo y el El punto está fijo entre el bit de signo y el cuerpo de la mantisacuerpo de la mantisa

El exponente indica la posición del puntoEl exponente indica la posición del punto

Bit de

signo Exponentesesgado Mantisa

Page 26: Aritmetica del computador

Aritmética de la computadora

Arquitectura de computadoras

26

Ejemplos de punto flotanteEjemplos de punto flotante

Bit de

signo

Exponentesesgado

Parte fraccionaria

8 bits 23 bits

0.11010001 x 210100 = 0 10010100 10100010000000000000000

-0.11010001 x 210100 = 1 10010100 10100010000000000000000

0.11010001 x 2-10100 = 0 01101100 10100010000000000000000

-0.11010001 x 2-10100 = 1 01101100 10100010000000000000000

Page 27: Aritmetica del computador

Aritmética de la computadora

Arquitectura de computadoras

27

Signos para Punto FlotanteSignos para Punto Flotante

La mantisa se guarda en complemento a 2La mantisa se guarda en complemento a 2 Los exponentes son sesgados, un valor fijo Los exponentes son sesgados, un valor fijo

o sesgo se resta a ese campo para conseguir o sesgo se resta a ese campo para conseguir el exponente verdaderoel exponente verdadero– ejemplo. Sesgo =128ejemplo. Sesgo =128– Tenemos un campo exponente de 8 bitsTenemos un campo exponente de 8 bits– Rango de valores puros es de 0-255Rango de valores puros es de 0-255– Le restamos 128 para obtener el valor correctoLe restamos 128 para obtener el valor correcto– Rango -128 a +127Rango -128 a +127

Page 28: Aritmetica del computador

Aritmética de la computadora

Arquitectura de computadoras

28

NormalizaciónNormalización

Los números PF usualmente están normalizadosLos números PF usualmente están normalizados El exponente se ajusta que el bit más significativo El exponente se ajusta que el bit más significativo

de la mantisa es 1de la mantisa es 1 Como siempre es 1 no se requiere almacenarloComo siempre es 1 no se requiere almacenarlo

– La notación científica donde los números están La notación científica donde los números están normalizados para tener un sólo dígito antes del punto normalizados para tener un sólo dígito antes del punto decimaldecimal

– Caso 3.123 x 10Caso 3.123 x 1033

Page 29: Aritmetica del computador

Aritmética de la computadora

Arquitectura de computadoras

29

Rangos de PFRangos de PF

Para un número de 32 bitsPara un número de 32 bits– Exponente de 8 bitsExponente de 8 bits– +/- 2+/- 2256 256 1.5 x 10 1.5 x 107777

PrecisiónPrecisión– El efecto de cambiar lsb (bit menos El efecto de cambiar lsb (bit menos

significativo) de la mantisasignificativo) de la mantisa– Mantisa de 23 bits 2Mantisa de 23 bits 2-23 -23 1.2 x 10 1.2 x 10-7-7

– Aproximadamente 6 posiciones decimalesAproximadamente 6 posiciones decimales

Page 30: Aritmetica del computador

Aritmética de la computadora

Arquitectura de computadoras

30

Números representablesNúmeros representables

Ent

eros

rep

rese

ntab

les

0-231 231-1N

úmer

osN

egat

ivos

Rep

rese

ntab

les

0-0.5X2-128 0.5x2-128N

úmer

osP

osit

ivos

Rep

rese

ntab

les

Des

bord

amie

nto

Pos

itiv

o

Des

bord

amie

nto

Neg

ativ

o Cero

Desbordamiento aCero positivo

Desbordamiento aCero negativo

Rectareal(1-2-24)x2127-(1-2-24)x2127

Page 31: Aritmetica del computador

Aritmética de la computadora

Arquitectura de computadoras

31

IEEE 754IEEE 754

Un estandar para el almacenamiento de Un estandar para el almacenamiento de punto flotantepunto flotante

Formatos de 32 y 64 bitsFormatos de 32 y 64 bits Exponentes de 8 y 11 bits respectivamenteExponentes de 8 y 11 bits respectivamente Formatos extendidos (mantisa y exponente) Formatos extendidos (mantisa y exponente)

para resultados intermediospara resultados intermedios

Page 32: Aritmetica del computador

Aritmética de la computadora

Arquitectura de computadoras

32

Aritmética de PF +/-Aritmética de PF +/-

Comprobar valores ceroComprobar valores cero Ajuste de mantisasAjuste de mantisas Suma o resta mantisasSuma o resta mantisas Normalizar el resultadoNormalizar el resultado

Page 33: Aritmetica del computador

Aritmética de la computadora

Arquitectura de computadoras

33

Aritmética de PF x/Aritmética de PF x/

Checasr si cualquiera de los operandos es ceroChecasr si cualquiera de los operandos es cero Sumar/restar exponentes Sumar/restar exponentes Multiplicar/dividir mantisas (checar signo)Multiplicar/dividir mantisas (checar signo) NormalizarNormalizar RedondearRedondear Todos los resultados intermedios deben estar en Todos los resultados intermedios deben estar en

un almacenamiento del doble de tamañoun almacenamiento del doble de tamaño

Page 34: Aritmetica del computador

Aritmética de la computadora

Arquitectura de computadoras

34

Multiplicación de punto flotanteMultiplicación de punto flotante

Multiplicar

¿X=0?

z0

Retornar

¿Y=0?Sumar

exponentes

Restarsesgo

¿DesbordamientoExponente?

¿Desbordamiento a Cero en exponente?

Indicardesbordamiento

IndicarDesbordamiento a

Cero

Multiplicarmantisas

Normalizar

Redondear

Retornar

Retornar

S

N

S

N

S

S

N

Page 35: Aritmetica del computador

Aritmética de la computadora

Arquitectura de computadoras

35

División en punto flotanteDivisión en punto flotante

Divdirr

¿X=0?

z0

Retornar

¿Y=0?Restar

exponentes

Sumarsesgo

¿Desbordamiento enExponente?

¿Desbordamiento a Cero en exponente?

Indicardesbordamiento

IndicarDesbordamiento a

Cero

Dividirmantisas

Normalizar

Redondear

Retornar

Retornar

S

N

S

N

S

S

N

zinfinito

Page 36: Aritmetica del computador

Aritmética de la computadora

Arquitectura de computadoras

36

Lecturas recomendadasLecturas recomendadas

IEEE 754 en el web de la IEEEIEEE 754 en el web de la IEEE

Page 37: Aritmetica del computador

Aritmética de la computadora

Arquitectura de computadoras

37