180
Unidad Aritmético Lógica Escuela Superior de Informática Universidad de Castilla-La Mancha

Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Embed Size (px)

Citation preview

Page 1: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Unidad Aritmético Lógica

Escuela Superior de Informática

Universidad de Castilla-La Mancha

Page 2: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Contenido

• Introducción

– Operaciones lógicas: desplazamientos lógicos

– Operaciones aritméticas: multiplicación y división

• Multiplicación

– Sin signo: suma desplazamiento

– Sin signo: sumas y restas

– Con signo: Algoritmo de Booth

• División

– Con restauración

– Sin restauración

• Coma flotante

Page 3: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

La ALU dentro del computador

Page 4: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Operaciones lógicas: desplazamientos

Page 5: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Operaciones aritméticas: multiplicación y división

• La operación básica es la suma, que se supone conocida en este curso

• También se suponen conocidos los multiplicadores paralelo de tipo combinacional

• En este tema se estudian los algoritmos para realizar las operaciones desde el punto de vista de la arquitectura, centrados en la multiplicación y la división

Page 6: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

MULTIPLICACIÓN BINARIA SIN SIGNO: SUMA DESPLAZAMIENTO

Page 7: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Fundamentos

Se multiplica cada bit del multiplicador, empezando por el menos significativo, por todos los bits del multiplicando

Si es 0, el resultado es 0

Si es 1, el resultado es el multiplicando

Cada vez que se considera un nuevo bit del multiplicador, se desplaza hacia la izquierda una posición el nuevo producto y se añade a la suma parcial acumulada

La última suma parcial será el resultado

Page 8: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Ejemplo

0 1 1 0

1 0 0 1

0 1 1 0inicial

0 0 0 0

0 0 0 0

0 0 1 1 0

0 0 0 1 1 0

x

Primera suma parcial acumulada

Segunda suma parcial acumulada

Ultima suma parcial acumulada (RESULTADO)

0 0 1 1 0 1 1 0

6x9=54

0 1 1 0

Page 9: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

IDEA BÁSICA

Hay que sumar las sumas acumuladas con el multiplicando DESPLAZADO A LA IZQUIERDA cuando el LSB del multiplicador sea 1.

EN LUGAR DE DESPLAZAR A LA IZQUIERDA EL MULTIPLICANDO, SE DESPLAZAN A LA DERECHA LAS SUMAS PARCIALES

Page 10: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Necesidades

El producto de un número binario de n bits con otro de m bits necesita m+n bits

Sea A el multiplicador y B el multiplicando

En el caso de que m=n, se necesitan dos registros iguales para almacenar el resultado

Sean R3 y R4 los registros donde se va almacenando el resultado

Page 11: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Arquitectura

C

R2

R4R3

R1 CON

Contador

Page 12: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Algoritmo Suma DesplazamientoSe inicializan a 0 el contador de bits del multiplicador y el registro R3

Se carga R1 con el multiplicando A y R2 con el multiplicador B

Se analiza el LSB de R2

Si es 1, se suma R1+ R3 y el resultado se deja en R3

Si es 0, se suma R1 + 0 (es decir, no se hace nada) y el resultado se deja en R3

Se incrementa el contador

Se produce un desplazamiento aritmético (con extensión de signo) de una posición hacia la derecha del conjunto C-R3-R4

Se realiza una rotación circular a derecha de R2

Se mira si el contador ha llegado hasta el final

En caso negativo se repite el proceso, volviendo a preguntar por el LSB de R2

En caso afirmativo se finaliza el proceso y el resultado está en C-R3-R4

Page 13: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Inicio, R30, Cont0R1A R2B

R20?

R3 R3+R1

Incrementacontador

C-R3-R4desplazaderecha

R2 rota circul

Cont?

Fin

1

0

NO

SI

SUMA DESPLAZAMIENTO

Page 14: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Ejemplo

Multiplicar A=0110 por B=1001El resultado debe ser 6x9=54 (en binario 0011 0110)

C

R2

R4R3

R1

Contador

Page 15: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Inicialización

Se carga A en R1 y B en R2.

Se pone a 0 el registro R3 y el contador

0

1001

XXXX0000

0110 0

Contador

Page 16: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Comprobación de R20 y acción

Como el LSB de R2 es 1 se suman R3 + R1 y se deja el resultado en R3

0

1001

XXXX0110

0110 0

Contador

Page 17: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Incremento contador

Se incrementa el contador en una unidad

0

1001

XXXX0110

0110 1

Contador

Page 18: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Desplazamiento a derecha

Se desplaza el conjunto C-R3-R4 una posición a la derecha

0

1001

0XXX0011

0110 1

Contador

Page 19: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Rotación circular de R2

El registro R2 rota a la derecha de forma circular

0

1100

0XXX0011

0110 1

Contador

Page 20: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

¿Ha llegado al final?

Comprueba que el contador no es 4 y repite el bucle

0

1100

0XXX0011

0110 1

Contador

Page 21: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Como el LSB de R2 es 0 se suman R3 + 0, es decir, NO hace nada, y se deja el resultado que había en R3

0

1100

0XXX0011

0110 1

Contador

Comprobación de R20 y acción

Page 22: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Incremento contador

Se incrementa el contador en una unidad

0

1100

0XXX0011

0110 2

Contador

Page 23: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Desplazamiento a derecha

Se desplaza el conjunto C-R3-R4 una posición a la derecha

0

1100

10XX0001

0110 2

Contador

Page 24: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Rotación circular de R2

El registro R2 rota a la derecha de forma circular

0

0110

10XX0001

0110 2

Contador

Page 25: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

¿Ha llegado al final?

Comprueba que el contador no es 4 y repite el bucle

0

0110

10XX0001

0110 2

Contador

Page 26: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Como el LSB de R2 es 0 se suman R3 + 0, es decir, NO hace nada, y se deja el resultado que había en R3

0

0110

10XX0001

0110 2

Contador

Comprobación de R20 y acción

Page 27: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Incremento contador

Se incrementa el contador en una unidad

0

0110

10XX0001

0110 3

Contador

Page 28: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Desplazamiento a derecha

Se desplaza el conjunto C-R3-R4 una posición a la derecha

0

0110

110X0000

0110 3

Contador

Page 29: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Rotación circular de R2

El registro R2 rota a la derecha de forma circular

0

0011

110X0000

0110 3

Contador

Page 30: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

¿Ha llegado al final?

Comprueba que el contador no es 4 y repite el bucle

0

0011

110X0000

0110 3

Contador

Page 31: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Como el LSB de R2 es 1 se suman R3 + R1 y se deja el resultado en R3

0

0011

110X0110

0110 3

Contador

Comprobación de R20 y acción

Page 32: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Incremento contador

Se incrementa el contador en una unidad

0

0011

110X0110

0110 4

Contador

Page 33: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Desplazamiento a derecha

Se desplaza el conjunto C-R3-R4 una posición a la derecha

0

0011

01100011

0110 4

Contador

Page 34: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Rotación circular de R2

El registro R2 rota a la derecha de forma circular

0

1001

01100011

0110 4

Contador

Page 35: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

¿Ha llegado al final?

Comprueba que el contador es 4 y acaba.

El resultado está en el registro R3 seguido de R4

0

0011

01100011

0110 4

Contador

Page 36: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Otro ejemplo

Multiplicar A=1001 por B=0110El resultado debe ser 9x6=54 (en binario 0011 0110)

C

R2

R4R3

R1

Contador

Page 37: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Inicialización

Se carga A en R1 y B en R2.

Se pone a 0 el registro R3 y el contador

0

0110

XXXX0000

1001 0

Contador

Page 38: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Como el LSB de R2 es 0 se suman R3 + 0, es decir, NO hace nada, y se deja el resultado que había en R3

0

0110

XXXX0000

1001 0

Contador

1001

0110

00000

Comprobación de R20 y acción

Page 39: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Incremento contador

Se incrementa el contador en una unidad

0

0110

XXXX0000

1001 1

Contador

Page 40: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Desplazamiento a derecha

Se desplaza el conjunto C-R3-R4 una posición a la derecha

0

0110

0XXX0000

1001 1

Contador

1001

0110

00000

00000 0

Page 41: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Rotación circular de R2

El registro R2 rota a la derecha de forma circular

0

0011

0XXX0000

1001 1

Contador

Page 42: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

¿Ha llegado al final?

Comprueba que el contador no es 4 y repite el bucle

0

0011

0XXX0000

1001 1

Contador

Page 43: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Como el LSB de R2 es 1 se suman R3 + R1 y se deja el resultado en R3

0

0011

0XXX1001

1001 1

Contador

1001

0110

00000

0000 0

1001+

01001 0

Comprobación de R20 y acción

Page 44: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Incremento contador

Se incrementa el contador en una unidad

0

0011

0XXX1001

1001 2

Contador

Page 45: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Desplazamiento a derecha

Se desplaza el conjunto C-R3-R4 una posición a la derecha

0

0011

10XX0100

1001 2

Contador

1001

0110

00000

0000 0

1001+

01001 0

00100 10

Page 46: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Rotación circular de R2

El registro R2 rota a la derecha de forma circular

0

1001

10XX0100

1001 2

Contador

Page 47: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

¿Ha llegado al final?

Comprueba que el contador no es 4 y repite el bucle

0

1001

10XX0100

1001 2

Contador

Page 48: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Como el LSB de R2 es 1 se suman R3 + R1 y se deja el resultado en R3

0

1001

10XX1101

1001 2

Contador

1001

0110

00000

0000 0

1001+

01001 0

0100 10

1001+

01101 10

Comprobación de R20 y acción

Page 49: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Incremento contador

Se incrementa el contador en una unidad

0

1001

10XX1101

1001 3

Contador

Page 50: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Desplazamiento a derecha

Se desplaza el conjunto C-R3-R4 una posición a la derecha

0

1001

110X0110

1001 3

Contador

1001

0110

00000

0000 0

1001+

01001 0

0100 10

1001+

01101 10

00110 110

Page 51: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Rotación circular de R2

El registro R2 rota a la derecha de forma circular

0

1100

110X0110

1001 3

Contador

Page 52: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

¿Ha llegado al final?

Comprueba que el contador no es 4 y repite el bucle

0

1100

110X0110

1001 3

Contador

Page 53: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Como el LSB de R2 es 0 se suman R3 + 0, es decir,

NO hace nada, y se deja el resultado que había en R3

0

1100

110X0110

1001 3

Contador

1001

0110

00000

0000 0

1001+

01001 0

0100 10

1001+

01101 10

0110 110

0000+

00110 110

Comprobación de R20 y acción

Page 54: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Incremento contador

Se incrementa el contador en una unidad

0

1100

110X0110

1001 4

Contador

Page 55: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Desplazamiento a derecha

Se desplaza en conjunto C-R3-R4 una posición

a la derecha

0

1100

01100011

1001 4

Contador

1001

0110

00000

0000 0

1001+

01001 0

0100 10

1001+

01101 10

0110 110

0000+

00110 110

0011 0110

Page 56: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Rotación circular de R2

El registro R2 rota a la derecha de forma circular

0

0110

01100011

1001 4

Contador

Page 57: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

¿Ha llegado al final?

Comprueba que el contador es 4 y acaba.

El resultado está en el registro R3 seguido de R4

0

0110

01100011

1001 4

Contador

1001

0110

00000

0000 0

1001+

01001 0

0100 10

1001+

01101 10

0110 110

0000+

00110 110

0011 0110

Page 58: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

MULTIPLICACIÓN BINARIA SIN SIGNO: SUMAS Y RESTAS

Page 59: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Fundamentos (I)Progresión geométrica de razón r y primer término a1

Restando miembro a miembro y despejando S, resulta que la suma de los n términos de una progresión geométrica cuyo primer término es a1 y cuya razón es r, viene dada por

11

1

1

1

r

primeroonultimoxraz

r

arraS

n

• También se puede ver de la forma1

11

r

araS

n

• Si r =2, el denominador se hace 1 y queda que la suma es el doble del último término, menos el primero

1

111 ... nraraaSnn rarararS 1

1

11 ...

Page 60: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Fundamentos (II)

El valor de un número expresado en binario se puede suponer la suma de una progresión geométrica de razón 2. Supongamos que tiene varios unos consecutivos

Ejemplo: el binario 0011100 equivalen a 24+23+22

Según lo visto anteriormente,

24+23+22 = 2·24-22= 25-22

Page 61: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Fundamentos (III)

Si consideramos la suma de las sucesivas potencias de 2 cuyos exponentes van desde m hasta m+n-1, tendremos la suma de una progresión geométrica de razón 2

mnmnmmm 222...22 11

• Si llamamos k = m + n, se puede poner

mkkmk 2...2222 21

Page 62: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Fundamentos (IV)

Ejemplo

Por tanto, multiplicar un número por 111000, es equivalente a multiplicarlo por

Posteriormente se multiplica por

Finalmente se restan

A·(0111000)=A·(25+24+23)=A·(26-23)

34536 22222

62

32

Page 63: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Fundamentos (V)

En general, un número que tiene varias cadenas de 1’s y 0’s se puede descomponer en varios números con sólo una cadena de 1’s:

0011001110 = 0011000000 + 0000001110

Así pues, multiplicar A por 0011001110 será equivalente a:

A · 0011000000 + A · 0000001110

Que equivale a:

A · (27 + 26) + A · (23 + 22 + 21)

O lo que es lo mismo a:

A · (28 – 26) + A · (24 – 21) = A · (28 – 26+ 24 – 21)

Page 64: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Fundamentos (VI)

El método de Sumas y Restas se basa, pues, en multiplicar el multiplicando por -2 elevado a la posición en que aparezca un 1 en el multiplicador, moviéndonos de derecha a izquierda

Multiplicar el multiplicando por +2 elevado a la posición en que aparezca un 0, después de una cadena de 1’s

Seguir desplazándonos hacia la izquierda y hacer lo mismo cuando encontremos un nuevo 1

De nuevo, se repite con la aparición de un 0

Y así sucesivamente hasta que ya no aparezca ningún 1

Se para cuando empieza la última cadena de ceros, haciendo, por tanto, la última suma: para asegurarse, es suficiente con añadir un 0 a la izquierda del 1 más significativo del multiplicador

Finalmente se suman TODOS los términos (de golpe o por partes)

Page 65: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Ejemplo

A=1100 (12) B=1010 (10)

Se completa B con un 0 a la izquierda y se calcula también –A (A en ca2) que necesariamente siempre empezará por 1

A=1100 B=01010 -A=10100

Se puede rellenar A con todos los CEROS a la izquierda que sean necesarios y –A con todos los UNOS a la izquierda que sean necesarios

A=0…01100 B=01010 -A=1…10100

Cada vez que aparece en el multiplicador B una cadena de unos (aunque sólo tenga un 1) se escribe A multiplicado por 2 elevado a la potencia donde está dicho 1 y cambiado de signo (-A·2s)

Cada vez que aparece en el multiplicador B una cadena de ceros (aunque sólo tenga un 0) se escribe A multiplicado por 2 elevado a la potencia donde está dicho 0 y sin cambiar el signo (+A·2t)

El proceso empieza con la primera cadena de unos que aparezca y termina con la última cadena de ceros (último 0), SIEMPRE MOVIÉNDONOS DE DERECHA A IZQUIERDA EN EL MULTIPLICADOR

Page 66: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Ejemplo (continuación)

1 1 1 0 1 0 0 0

0 1 1 1 1 0 0 0

12 x 10 = 120

(base 10)

0 0 1 1 0 0 0 0

1 1 0 0 0 0 0 0

1 0 1 0 0 0 0 0

7 6 5 4 3 2 1 012·A22·A

32·A

42·A

-24

+48

-96

+192+120

(-2 + 4 - 8+ 16) x12 = 120

ValorSuma

-24

+24

-72

A=1100 B=01010 -A=1…10100

Page 67: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Otro ejemplo25 x 23 = 575

A= 0…011001 -A = 1…100111

B= 010111

10 9 8 7 6 5 4 3 2 1 0

-A·20 1 1 1 1 1 1 0 0 1 1 1

+A·23 0 0 0 1 1 0 0 1 0 0 0 +

SP 0 0 0 1 0 1 0 1 1 1 1

-A·24 1 1 0 0 1 1 1 0 0 0 0 +

SP 1 1 1 0 0 0 1 1 1 1 1

+A·25 0 1 1 0 0 1 0 0 0 0 0 +

ST 0 1 0 0 0 1 1 1 1 1 1

575 = 29 + 25 + 24 + 23+ 22 + 21 + 20

Page 68: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Necesidades

El producto de un número binario de n bits con otro de m bits necesita m+n bits

Sea A el multiplicador y B el multiplicando

En el caso de que m=n, se necesitan dos registros iguales para almacenar el resultado

Sean R3 y R4 los registros donde se va almacenando el resultado

Page 69: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Arquitectura

C

R2

R4R3

R1 CON

Contador

Page 70: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Algoritmo de Sumas y RestasSe inicializan a 0 el contador de bits del multiplicador y el registro R3

Se carga R1 con el multiplicando A y R2 con el multiplicador B

Se analiza R20 , el LSB de R2, y se llama R2-1 al bit donde irá a parar R20 cuando R2 rote a derechas. R2-1 se inicializa a 0

Se leen los bits del multiplicador de derecha a izquierda

El proceso comienza cuando se lee el PRIMER UNO, haciendo R3R3-R1

En los sucesivos bucles se aplica el siguiente criterio:

• Si es el principio de una cadena de unos, se hace la resta R3R3 – R1

• Si es el principio de una cadena de ceros, se hace la suma R3 R3 + R1

Se incrementa el contador

Se rota hacia la derecha una posición el conjunto C-R3-R4, con extensión de signo

Se realiza una rotación circular a derecha de R2

Se mira si el contador ha llegado hasta el final

En caso negativo se repite el proceso, volviendo a preguntar por el LSB de R2

En caso afirmativo se suma R3+R1 dejando el resultado en R3, con lo que se finaliza el proceso y el resultado queda en R3-R4. ESTO ES EQUIVALENTE A EJECUTAR EL ÚLTIMO CERO QUE SIEMPRE SE SUPONE QUE TIENE UN NÚMERO POSITIVO

Page 71: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Inicio, Cont0R1A R2 B R30 R2-10

R20 R2-1?

Incrementacontador

C-R3-R4Desplazamiento a la derecha

Rotación circular R2

Cont? Fin

01 empieza cadena de ceros

R3 R3+R1R3 R3-R1

NO SI

empieza cadena de unos 10

1100

R3 R3+R1

ALGORITMO DE SUMAS Y RESTAS

Page 72: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Ejemplo

Multiplicar A=1100 por B=1010El resultado debe ser 12x10=120 (en binario 0111 1000)

C R4R3

R1

Contador

R2

R2-1

R20

Page 73: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Inicialización

Se carga A en R1 y B en R2.

Se pone a 0 C, el registro R3, el Contador y R2-1

0 XXXX0000

1100 0

Contador

12

101 0 1 0

R2-1

R20

0

Page 74: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Como el LSB de R2 es el primer 0 no se hace nada (todavía no ha llegado el primer 1) y se deja el resultado en C-R3 como estaba

0 XXXX0000

1100 0

Contador

Comprobación de R20 y acción

1 0 1 0

R2-1

R20

0

Page 75: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Incremento contador

Se incrementa el contador en una unidad

0 XXXX0000

1100 1

Contador

1 0 1 0

R2-1

R20

0

Page 76: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Desplazamiento a derecha

Se desplaza el conjunto C-R3-R4 una posición a la derecha

0 0XXX0000

1100 1

Contador

1 0 1 0

R2-1

R20

0

Page 77: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Rotación circular de R2

El registro R2 rota a la derecha de forma circular

0 0XXX0000

1100 1

Contador

0 1 0 1

R2-1

R20

0

Page 78: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

¿Ha llegado al final?

Comprueba que el contador no es 4 y repite el bucle

0 0XXX0000

1100 1

Contador

0

12

0 1 0 1

R2-1

R20

0

Page 79: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Como el LSB de R2 es 1 (EMPIEZA UNA CADENA DE UNOS) se hace R3 - R1 y se deja el resultado en C-R3, quedando 0 – 12 = -12 en complemento a 2

1 0XXX0100

1100 1

Contador

-24

-12

Comprobación de R20 y acción

0 1 0 1

R2-1

R20

0

Page 80: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Incremento contador

Se incrementa el contador en una unidad

1 0XXX0100

1100 2

Contador

0 1 0 1

R2-1

R20

0

Page 81: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Desplazamiento a derecha

Se desplaza el conjunto C-R3-R4 una posición a la derecha

1 00XX1010

1100 2

Contador

-6

-24

0 1 0 1

R2-1

R20

0

Page 82: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Rotación circular de R2

El registro R2 rota a la derecha de forma circular

1 00XX1010

1100 2

Contador

0 0 1 0

R2-1

R20

1

Page 83: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

¿Ha llegado al final?

Comprueba que el contador no es 4 y repite el bucle

1 00XX1010

1100 2

Contador

12

-6

0 0 1 0

R2-1

R20

1

Page 84: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Como el LSB de R2 es 0 (EMPIEZA UNA CADENA DE CEROS) y ya llegó un 1 anteriormente, se suman R3 + R1 y se deja el resultado en C-R3, quedando -6 + 12 = +6

0 00XX0110

1100 2

Contador

+6

Comprobación de R20 y acción

+24

0 0 1 0

R2-1

R20

1

Page 85: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Incremento contador

Se incrementa el contador en una unidad

0 00XX0110

1100 3

Contador

0 0 1 0

R2-1

R20

1

Page 86: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Desplazamiento a derecha

Se desplaza el conjunto C-R3-R4 una posición a la derecha

0 000X0011

1100 3

Contador

+3

+24

0 0 1 0

R2-1

R20

1

Page 87: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Rotación circular de R2

El registro R2 rota a la derecha de forma circular

0 000X0011

1100 3

Contador

1 0 0 1

R2-1

R20

0

Page 88: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

¿Ha llegado al final?

Comprueba que el contador no es 4 y repite el bucle

0 000X0011

1100 3

Contador

12

+3

1 0 0 1

R2-1

R20

0

Page 89: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Como el LSB de R2 es 1 (EMPIEZA UNA CADENA DE UNOS) se hace R3 - R1 y se deja el resultado en C-R3, quedando 3 – 12 = -9

1 000X0111

1100 3

Contador

-9

Comprobación de R20 y acción

-72

1 0 0 1

R2-1

R20

0

Page 90: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Incremento contador

Se incrementa el contador en una unidad

1 000X0111

1100 4

Contador

1 0 0 1

R2-1

R20

0

Page 91: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Desplazamiento a derecha

Se desplaza el conjunto C-R3-R4 una posición a la derecha

1 10001011

1100 4

Contador

-5

-72

1 0 0 1

R2-1

R20

0

Page 92: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

El registro R2 rota a la derecha de forma circular

Rotación circular de R2

1 10001011

1100 4

Contador

-5

12

0 1 0 0

R2-1

R20

1

Page 93: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

¿Ha llegado al final?Comprueba que el contador es 4 y acaba, sumando previamente R3 + R1 y dejándolo

en R3, sumando -5 + 12 = +7

El resultado está en el registro R3 seguido de R4. C no es necesario para el resultado

0 10000111

1100 4

Contador

+7

+120

0 1 0 0

R2-1

R20

1

Page 94: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

MULTIPLICADOR BINARIO CON SIGNO:

ALGORITMO DE BOOTH

Page 95: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Multiplicación de números de distinto signo

Una forma de hacerlo es multiplicar los valores absolutos con los algoritmos vistos hasta ahora y asignarle el signo que corresponda, conocido a priori

Si los dos números son del mismo signo, el resultado será positivo. En caso contrario será negativo.

Cuando el resultado sea negativo, se realizará además el complemento a 2

Page 96: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Idea

Sirve para números enteros

Analiza los bits del multiplicador

Toma decisiones en función de que comience una cadena de ceros, de unos o ninguno de los casos

Desplaza a la derecha los resultados provisionales

Page 97: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Fundamentos (I)

Supongamos que vamos a multiplicar un multiplicando A positivo (expresado en binario sin signo con n bits) por un multiplicador B negativo, expresado en complemento a 2 también con n bits

El producto A·B es igual que si se multiplicara sin signo A·(2n-|B|)Ejemplo, con 4 bits, 4x(-3) sería equivalente a 4x13, ya que la representación de -3 en

ca2 con 4 bits coincide con la de 13 en binario natural con 4 bits, en ambos casos es 1101

Sea R*=A·(2n-|B|) lo que sale aplicando el algoritmo de sumas y restas, en nuestro ejemplo 4x13=52 (binario 00110100)

Sea R=22n - A·|B| lo que debería salir (el resultado buscado).Téngase en cuenta que la potencia 22n queda fuera del campo de representación del producto. Las representaciones de R y del resultado - A·|B| coinciden en sus 2n bits menos significativos

En nuestro ejemplo, tanto 244 en binario natural como -12 en complemento a 2 se representan como 11110100 con 8 bits

Page 98: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Fundamentos (II)

La relación entre R* y R es la siguiente

R* = A·(2n-|B|) = 22n - 22n +A·2n – A·|B|

Como R=22n-A·|B|

R* = R + A·2n - 22n , donde el valor de 22n en los 2n bits menos significativos (donde cabe el producto) es irrelevante

Por tanto, R = R* - A·2n

Es decir, el resultado buscado es el resultado que se obtiene con el algoritmos de sumas y restas, al que finalmente se le resta A·2n. Simplemente se aplica dicho algoritmo, ACABANDO con un 1, lo cual siempre ocurre puesto que el bit de signo de un número negativo en complemento a 2 es siempre 1

Page 99: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Mecánica

Se inicializan a:Cero: R3, el contador, el bit R2-1

Al valor del multiplicando: R1

Al valor del multiplicador R2 y R4

Se leen los bits R20 y R2-1

Según sea un valor 10, 01 o el resto (00 o bien 11) se toma la decisión de restar, sumar o no hacer nada, respectivamente

Se incrementa el contador

Se desplaza todo a la derecha, incluido R2

Se pregunta si ha acabado. En caso contrario se repite el bucle

Page 100: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Inicio, Cont0R1A R2 B R30 R4B R2-10

R20 R2-1?

Incrementacontador

C-R3-R4Desplazamiento a la derecha

Rotación circular R2

Cont? Fin

01 empieza cadena de ceros

R3 R3+R1R3 R3-R1

NO SI

empieza cadena de unos 10

1100

ALGORITMO DE BOOTH

Page 101: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Ejemplo

A=11001 (+25) Se trabaja con n=5 bits

B=10111 (-9)

A x B = -225 (1 1100011111)

ca2 (1 1100011111) = 0 0011100001

0 00111000012) = 1+32+64+128 = 225

Page 102: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Inicialización

Se carga A=11001 en R1 y B=10111 en R2 y R4

Se ponen a 0 el contador, el bit R2-1 y R3

R1

0

10111

1011100000

11001 0

Contador

0R2

R3 R4

R2-1

R20

Page 103: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Comprobación multiplicador y decisión

Comienza cadenas de unos, R3R3-R1, es decir, se hace 0 00000 + 1 00111 = 1 00111

R1

1

10111

1011100111

11001 0

Contador

0R2

R3 R4

R2-1

R20

-25

Page 104: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Incremento contador

Se incrementa el contador

R1

1

10111

1011100111

11001 1

Contador

0R2

R3 R4

R2-1

R20

Page 105: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Desplazamiento a derecha

R3 y R4 se desplazan a la derecha, perdiéndose el bit de la derecha de R4

Rota R2

R1

1

01011

1101110011

11001 1

Contador

1R2

R3 R4

R2-1

R20

-13

Page 106: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

¿Ha llegado al final?

Comprueba que el contador no es 5 y repite el bucle

R1

1

01011

1101110011

11001 1

Contador

1R2

R3 R4

R2-1

R20

Page 107: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

No hay cambio de cadena. No se hace nada, salvo comprobar que R20 y R2-1 son iguales.

R1

1

01011

1101110011

11001 1

Contador

1R2

R3 R4

R2-1

R20

Comprobación multiplicador y decisión

Page 108: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Incremento contador

Se incrementa el contador

R1

1

01011

1101110011

11001 2

Contador

1R2

R3 R4

R2-1

R20

Page 109: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Desplazamiento a derecha

R3 y R4 se desplazan a la derecha, perdiéndose el bit de la derecha de R4

Rota R2

R1

1

10101

1110111001

11001 2

Contador

1R2

R3 R4

R2-1

R20

-7

Page 110: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

¿Ha llegado al final?

Comprueba que el contador no es 5 y repite el bucle

R1

1

10101

1110111001

11001 2

Contador

1R2

R3 R4

R2-1

R20

Page 111: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

No hay cambio de cadena. No se hace nada, salvo comprobar que R20 y R2-1 son iguales.

R1

1

10101

1110111001

11001 2

Contador

1R2

R3 R4

R2-1

R20

Comprobación multiplicador y decisión

Page 112: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Incremento contador

Se incrementa el contador

R1

1

10101

1110111001

11001 3

Contador

1R2

R3 R4

R2-1

R20

Page 113: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Desplazamiento a derecha

R3 y R4 se desplazan a la derecha, perdiéndose el bit de la derecha de R4

Rota R2

R1

1

11010

1111011100

11001 3

Contador

1R2

R3 R4

R2-1

R20

-4

Page 114: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

¿Ha llegado al final?

Comprueba que el contador no es 5 y repite el bucle

R1

1

11010

1111011100

11001 3

Contador

1R2

R3 R4

R2-1

R20

Page 115: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Comienza cadenas de ceros, R3R3+R1, es decir, se hace 1 11100 + 0 11001 = 0 10101 (-4+25 = +21)

R1

0

11010

1111010101

11001 3

Contador

1R2

R3 R4

R2-1

R20

Comprobación multiplicador y decisión

+21

Page 116: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Incremento contador

Se incrementa el contador

R1

0

11010

1111010101

11001 4

Contador

1R2

R3 R4

R2-1

R20

Page 117: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Desplazamiento a derecha

R3, R4 y R2-1 se desplazan a la derecha, perdiéndose el bit de la derecha de R4

R1

0

11101

1111101010

11001 4

Contador

0R2

R3 R4

R2-1

R20

+10

Page 118: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

¿Ha llegado al final?

Comprueba que el contador no es 5 y repite el bucle

R1

0

11101

1111101010

11001 4

Contador

0R2

R3 R4

R2-1

R20

Page 119: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Comienza cadenas de unos, R3R3-R1, es decir, se hace 0 01010 +1 00111 = 1 10001 (+10-25 = -15)

R1

1

11101

1111110001

11001 4

Contador

0R2

R3 R4

R2-1

R20

Comprobación multiplicador y decisión

-15

Page 120: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Incremento contador

Se incrementa el contador

R1

1

11101

1111110001

11001 5

Contador

0R2

R3 R4

R2-1

R20

Page 121: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Desplazamiento a derecha

R3, R4 y R2-1 se desplazan a la derecha, perdiéndose el bit de la derecha de R4

R1

1

01110

1111111000

11001 5

Contador

1R2

R3 R4

R2-1

R20

-8

Page 122: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

¿Ha llegado al final?

Comprueba que el contador es 5 y acaba

El resultado aparece en ca2 en los 11 bits, C-R3-R4

R1

1

01110

1111111000

11001 5

Contador

1R2

R3 R4

R2-1

R20

Page 123: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

DIVISIÓN BINARIA SIN SIGNO:

CON RESTAURACIÓN

Page 124: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Ejemplo en base 10

-5

2 91 5

-25

4

579

Page 125: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Ejemplo en base 21001111 101

0-000

100-101100-101

100-101100-101

100 4

5

79

15

1

11

111

1

1

Page 126: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Otro ejemplo en ambas bases111010110 10101

10110-10101

10000

-00000

100001-10101

11001-10101

1000-00000

1000

470

8

21

22

-4

5 022

-4 2

8

7 204 1

2

Page 127: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Arquitectura

R2 R1 R3

S/R

BS

El contenido de R2 no varía

0

Page 128: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Algoritmo de División con Restauración

Se carga R1 con el dividendo A y R2 con el divisor B. El registro R3 es irrelevante inicialmente y almacenará el cociente

Se hace la resta R1 – R2, para ver si “cabe o no cabe”

Si el resultado es POSITIVO (sí “cabe”), se introduce un 1 en R3 desde la derecha, desplazando los demás bits de R3 a la izquierda

Si el resultado es NEGATIVO (no “cabe”), se hace la suma R1 + R2 (para RESTAURAR el dividendo) y el resultado se deja en R1 y se introduce un 0 en R3 por la derecha, desplazando los demás bits de R3 a la izquierda

Se desplaza R1 a la izquierda rellenando los huecos con CEROS. Es como si nos moviéramos a la derecha en el dividendo

Se repite el bucle hasta que el bit más significativo de R3 entre completamente en el registro R3

El contenido de R2 NUNCA se altera

Finalmente, el cociente queda en R3

Page 129: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Inicio, R3 0 R1A (dividendo) R2B (divisor)

R1-R2<0 ?

R1desplazaizquierda

MSB R3? Fin

NO SI R1 R1+R2

R31

NO SI

R30

DIVISIÓN CON

RESTAURACIÓN

R1 R1-R2

Page 130: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Ejemplo

Dividir A=1001111 (79 en decimal) entre B=1010000 (80 en decimal)

Supongamos que trabajamos con registros de 8 bits, en complemento a 2,

00000000

R1

01001111

R3 R2

Inicio 01010000

Page 131: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Resta

R1- R2

Suma

R1+R2

R3 0

R1

NEGATIVO

R3 R2

01010000

R1

1001111

R3 R2

01010000

0000000

R1 R3 R2

01010000

Desplazamiento

Izquierda

00000000

000000000

1001111 0 0

Page 132: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Resta

R1- R2

R1

01001110

R3 R2

01010000

0000000

R1 R3 R2

01010000

Desplazamiento

Izquierda

R3 1

00000000

POSITIVO

0 11001110

Page 133: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Resta

R1- R2

00000001

R1

01001100

R3 R2

01010000

0000001

R1

1001100

R3 R2

01010000

Desplazamiento

Izqda.

R3 1

POSITIVO

10

Page 134: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Resta

R1- R2

00000011

R1

01001000

R3 R2

01010000

0000011

R1

1001000

R3 R2

01010000

Desplazamiento

Izqda.

R3 1

POSITIVO

10

Page 135: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Resta

R1- R2

00000111

R1

01000000

R3 R2

01010000

0000111

R1

1000000

R3 R2

01010000

Desplazamiento

Izqda.

R3 1

POSITIVO

10

Page 136: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Resta

R1- R2

00001111

R1

00110000

R3 R2

01010000

0001111

R1

0110000

R3 R2

01010000

Desplazamiento

Izqda.

R3 1

POSITIVO

10

Page 137: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Resta

R1- R2

00011111

R1

00010000

R3 R2

01010000

0011111

R1

0010000

R3 R2

01010000

Desplazamiento

Izqda.

R3 1

POSITIVO

10

Page 138: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Resta

R1- R2

Suma

R1+R2

00111111

R1 R3 R2

01010000

R1

0100000

R3 R2

01010000

0111111

R1

0100000

R3 R2

01010000

Desplazamiento

Izquierda

R3 0

00111111

NEGATIVO

0

00

Page 139: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Cifras decimales (I)

Según el ejemplo visto:

01001111

1010000

es igual a 01111110

¿Qué significa esto?

Page 140: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Cifras decimales (II)

Como el numerador es menor que el denominador, el resultado DEBE SER MENOR QUE 1. Por tanto, el valor de la división es:

1001111

1010000

es igual a 0,1111110

En base 10 sería:

2-1 + 2-2 + 2-3 + 2-4 + 2-5 + 2-6 = 0,984375 (exacto: 79/80=0,9875)

Page 141: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Cifras decimales (III)

79/5=15,8

79/10=7,9

79/20=3,95

79/40=1,9751001111 / 101000 = 1,111110

BASE 10 (exacto)BASE 2

1001111 / 10100 = 11,11110

1001111 / 1010 = 111,1110

1001111 / 101 = 1111,110

BASE 10 (aprox.)

1,96875

3,9375

7,875

15,75

Page 142: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Cifras decimales (IV)

Por tanto, para dividir dos números binarios con distintos números de bits, SE AJUSTA el menor al mayor, se divide con el algoritmo y finalmente se aplica lo visto en las transparencias anteriores

Page 143: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Ejemplo con obtención del resto(CON RESTAURACIÓN)

Dividir A=1101011 (107 en decimal) entre B=101 (5 en decimal), cuyo cociente es 21 y el resto 2

Vamos a trabajar con registros de 8 bits, en complemento a 2.

En este ejemplo, los operandos no tienen el mismo número de bits

R1

0110 1011

R3 R2

Inicio 0101

Page 144: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Resta

R1- R2

R1

0001 1011

R3 R2

0101

R1 R3 R2

0101

Desplazamiento

Izquierda

R3 1

POSITIVO

10011 011

Page 145: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Resta

R1- R2

1

R1 R3 R2

0101

10

R1

0110 11

R3 R2

0101

Desplazamiento

Izqda.

R3 0

NEGATIVO

Suma

R1+R2

R1

0011 011

R3 R2

01011

Page 146: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Resta

R1- R2

10

R1

0001 11

R3 R2

0101

R1

0011 1

R3 R2

0101

Desplazamiento

Izqda.

R3 1

POSITIVO

101

Page 147: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Resta

R1- R2

R1 R3 R2

1010

R1

0111

R3 R2Desplazamiento

Izqda.

R3 0

NEGATIVO

Suma

R1+R2

R1

0011 1

R3 R2

101 0101

0101

0101

101

Page 148: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Resta

R1- R2

1010

R1

0010

R3 R2

0101

10101

R3

POSITIVO

COCIENTE

RESTO

Cuando el proceso finaliza, los bits “de más” han desaparecido

Page 149: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

DIVISIÓN BINARIA SIN SIGNO:

SIN RESTAURACIÓN

Page 150: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Fundamentos (I)

En un determinado momento el dividendo residual DRi está en R1 y B, el divisor, fijo en R2

Se resta R2, obteniéndose DRi -B

Si dicho resultado fue negativo se vuelve a sumar R2, obteniéndose DRi-B+B, para RESTAURAR el dividendo

Se produce un desplazamiento a la izquierda, almacenando en R1 el valor 2·(DRi-B+B)

En el paso siguiente, se vuelve a restar B, quedando

2·(DRi - B+B) – B, que es igual a 2·(DRi-B) + B

Dicha cantidad se podría haber obtenido mucho más rápidamente haciendo la resta de B, el desplazamiento SIN SUMAR (sin restaurar) y finalmente la suma de B

Page 151: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Fundamentos (II)

Siempre hay que mirar el bit de signo (BS) de R1. Inicialmente se inicializa a 0

Cuando BS=0 (R1 positivo) se restan R1 y R2 dejando el resultado en R1, se introduce un 1 en R3 por la derecha y se desplaza R1 a la izquierda

Cuando BS=1 (R1 negativo) se suman R1 y R2 dejando el resultado en R1, se introduce un 0 en R3 por la derecha y se desplaza a la izquierda R1

El proceso terminará cuando R3 se “llene” de bits, siendo MSB (R3)=1

NOTA: Las introducciones de bits por la derecha en R3 suponen un desplazamiento hacia la izquierda de dicho registro

Page 152: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Inicio, R3 0, BS 0 R1A (dividendo) R2B (divisor)

BS?

R1desplazaizquierda

MSB R3? Fin

0 1

0 1

R3BS(R1)

DIVISIÓN SINRESTAURACIÓN

R3BS(R1)

R1R1-R2 R1R1+R2

BS

Page 153: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

COMPARACIÓN CON Y SIN RESTAURACIÓN

CON RESTAURACIÓN

Siempre se hace la resta

Se pregunta por el signo del dividendo residual:

Si fue positivo, bien hecha estaba la resta y se introduce un 1 en R3

Si fue negativo, era innecesaria y hay que deshacerla (RESTAURAR) el valor haciendo una suma y se introduce un 0 por R3

SIN RESTAURACIÓN

Se pregunta por el signo del dividendo residual:

Si fue positivo, se hace la resta y se introduce un 1 en R3

Si fue negativo, se hace la suma y se introduce un 0 por R3

No se hace una operación previa para después deshacerla

Page 154: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Ejemplo

Dividir A=11101010 (234 en decimal) entre B=10001001 (137 en decimal)

Supongamos que trabajamos con registros de 9 bits, en complemento a 2,

000000000

R1

11101010

R3 R2

Inicio 0 10001001

-B=1 01110111 (en complemento a 2)

BS

0

Page 155: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

La primera vez BS=0, por tanto,

R1R1-R2

000000000

R1

0 11101010

R3BS

Desplaz.

Resta

1 01110111 +

011000010

0 01100001

R2010001001

000000001

0

SÍ CABE

BS

Page 156: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Como BS=0, R1R1-R2

000000001

R1

0 11000010

R3

Desplaz.

Resta

1 01110111 +

001110010

0 00111001

R2010001001

000000011

0

SÍ CABE

BS

Page 157: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Como BS=0, R1R1-R2

R1

0 01110010

R3

Desplaz.

Resta

1 01110111 +

111010010

1 11101001

R2010001001000000011

000000110

0

NO CABE

BS

Page 158: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Como BS=1, R1R1+R2

000000110

R1

1 11010010

R3

Desplaz.

Suma

0 10001001 +

010110110

0 01011011

R2010001001

000001101

0

SÍ CABE

BS

Page 159: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Como BS=0, R1R1-R2

000001101

R1

0 10110110

R3

Desplaz.

Resta

1 01110111 +

001011010

0 00101101

R2010001001

000011011

0

SÍ CABE

BS

Page 160: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Como BS=0, R1R1-R2

000011011

R1

0 01011010

R3

Desplaz.

Resta

1 01110111 +

110100010

1 11010001

R2010001001

000110110

0

NO CABE

BS

Page 161: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Como BS=1, R1R1+R2

000110110

R1

1 10100010

R3

Desplaz.

Suma

0 10001001 +

001010110

0 00101011

R2010001001

001101101

0

SÍ CABE

BS

Page 162: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Como BS=0, R1R1-R2

001101101

R1

0 01010110

R3

Desplaz.

Resta

1 01110111 +

110011010

1 11001101

R2010001001

011011010

0

NO CABE

BS

Page 163: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Como BS=1, R1R1+R2

000000110

R1

1 10011010

R3

Desplaz.

Suma

0 10001001 +

001000110

0 00100011

R2010001001

110110101

0

SÍ CABE

BS

Page 164: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Cifras decimales (I)

Según el ejemplo visto:

11101010

10001001

es igual a 110110101

¿Qué significa esto? Como el numerador es mayor que el denominador, el resultado será mayor que 1, pero no mayor que 2, ya que tienen el mismo número de bits. Por tanto, el resultado es:

1,10110101

Page 165: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Cifras decimales (II)

El valor exacto sería

234 / 137 = 1,708029197…

mientras que el valor que resulta en binario es 1,70703125

Page 166: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Ejemplo con obtención del resto(SIN RESTAURACIÓN)

Dividir A=1101011 (107 en decimal) entre B=101 (5 en decimal), cuyo cociente es 21 y el resto 2

Vamos a trabajar con registros de 8 bits, en complemento a 2.

En este ejemplo, los operandos no tienen el mismo número de bits

Para sumar R1+R2 se suma 0 101 (+5 en complemento a 2) Para restar R1-R2 se suma 1 011 (-5 en complemento a 2)

R1

0110 1011

R3 R2

Inicio 0101

BS

Page 167: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

La primera vez BS=0, por tanto, R1R1-R2

R1

0 110 1011

R3BS

Desplaz.

Resta

1 011 +

0011 011 1

0 001 1011

R20101

BS

Page 168: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Como BS=0, R1R1-R2

1

R1

0 011 011

R3

Desplaz.

Resta

1 011 +

1100 11 10

1 110 011

R20101

BS

Page 169: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Como BS=1, R1R1+R2

10

R1

1 100 11

R3

Desplaz.

Suma

0 101 +

0011 1 101

0 001 11

R20101

BS

Page 170: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Como BS=0, R1R1-R2

101

R1

0 011 1

R3

Desplaz.

Resta

1 011 +

1101 1010

1 110 1

R20101

BS

Page 171: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Como BS=1, R1R1+R2

1010

R1

1 101

R3

Suma

0 101 +

10101

0 010

R20101

RESTO

COCIENTE

Cuando el proceso finaliza, los bits “de más” han desaparecido

Page 172: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

COMA FLOTANTE (I)

Inicialmente cada fabricante tenía su propia representación de números en coma flotante.

Muchos problemas a la hora de transportar programas y datos entre computadores

El IEEE (Institute of Electrical and Electronics Engineers) definió un estándar en 1985 para la representación de números en coma flotante en binario IEEE 754

En 1987 se extendió el estándar para representar números en coma flotante independientemente de la base de numeración, IEEE 854

Este nuevo estándar no supone cambios a IEEE 754

Page 173: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

COMA FLOTANTE (II)

Todo número se puede representar como

M * Bexp

En IEEE 754 se pueden representar los números en simple precisión (32 bits) y en doble precisión (64 bits)

1bit 8bits 23bits

Signo Exponente Mantisa

1bit 10bits 53bits

Signo Exponente Mantisa

Simple Precisión. Exceso 127

Doble Precisión. Exceso 1023

N = (-1)S * 1.M * 2(exp-exc)

Page 174: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Ejemplo (I)

Representar el número real +2,71 en el formato IEEE 754, truncando los bits que no quepan en la representación

2,71 10,10110101110000101000011 x 20

2,71 1,010110101110000101000011 x 21

Mantisa010110101110000101000011

Exponente +1

Exponente + 127 128

En Hexadecimal se podría expresar como4 0 2 D 7 0 A 3

Signo Exponente + 127 Mantisa

0 1 0 0 0 0 0 0 0 010110101110000101000011

Page 175: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Ejemplo (II)Determinar qué número real representa el hexadecimal

C8860800El valor binario es

1 100 1000 1 000 0110 0000 1000 0000

Mantisa 000011000001000000Signo Negativo

Exponente +127 128+16+1 Exponente 18

Valor absoluto 1,000011000001 x 218

Valor absoluto 1000011000001 x 26

Valor real -4.289 x 64 = -274.496

Page 176: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Suma/Resta en coma flotante

Dados dos números

A = m1 * Be1

B = m2 * Be2

Se ajustan las mantisas y los exponentes hasta que e1=e2=e. Entonces tendremos

A = m1 * Be B = m2 * Be

La suma y la resta entonces se realizan de esta forma

A + B = (m1 + m2) * Be A – B = (m1 - m2) * Be

Se normalizan los resultados a IEEE 754

Page 177: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Multiplicación / División en coma flotante

Dados dos números

A = m1 * Be1

B = m2 * Be2

La multiplicación y división se realiza:

A * B = (m1 * m2) * Be1+e2

A / B = (m1 / m2) * Be1-e2

Se normalizan los resultados a IEEE 754

Page 178: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Técnicas de Redondeo

El redondeo es la aproximación necesaria para representar en el computador una cantidad que no puede expresarse de forma exacta

El estándar IEEE 754 exige que el resultado de una operación sea el que se hubiese obtenido teniendo una precisión infinita y al final se redondee el resultado a la precisión exigida (simple o doble)

Tipos de redondeo:

Truncación

Redondeo propiamente dicho

Bit menos significativo forzado a 1

Page 179: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Distintos casos

• Truncación: eliminación de los bits de la derecha (menos significativos) que no caben en la representación. Es muy sencillo de implementar. Puede producir errores apreciables, siempre del mismo signo, lo que propicia la acumulación de errores

• Redondeo: se representa haciendo una aproximación al más cercano. Similar al redondeo de los céntimos de €. Los errores pueden ser positivos o negativos, pero menores que en el caso de la truncación. Es más difícil de implementar

• Forzado a 1: se trunca, pero se obliga a que el bit menos significativo sea 1. Es fácil de implementar y produce errores pequeños y de signo variable, evitando su acumulación

Page 180: Unidad Aritmético Lógica - esi.uclm.es · Se incrementa el contador en una unidad 0 1001 0110 XXXX 0110 1 Contador. Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una

Ejemplos de redondeo a 10 bits

Valor exacto Truncación Redondeo Forzado a 1

0,1100110111 111 0,1100110111 0,1100111000 0,1100110111

0,1000100010 111 0,1000100010 0,1000100011 0,1000100011

0,1000000000 100 0,1000000000 0,1000000001 0,1000000001

0,1111111111 000 0,1111111111 0,1111111111 0,1111111111