Você está na página 1de 11

EJERCICIOS RESUELTOS DEL TEMA 5

MULTIPLICACIÓN
1.- Multiplicar los números 27 y -7 utilizando representación binaria en
complemento a 2, con el mínimo número posible de bits y empleando el
algoritmo apropiado.
Vamos a multiplicar +27 (multiplicando) por -7 (multiplicador) con el algoritmo de
Booth.

+ 27 0 11011 +7  0 111


- 271 00101 - 7  1 001

R1 C R3 R4 R2 R2-1 Contador
Inicio 11011 0 00000 xxxx 100 1 0 0
1 00101 +
Resta 11011 1 00101 xxxx 100 1 0 0
Increm. Cont 11011 1 00101 xxxx 100 1 0 1
Desp. y rotac. 11011 1 10010 1xxx 010 0 1 1
0 11011 +
Suma 11011 0 01101 1xxx 010 0 1 1
Increm. Cont 11011 0 01101 1xxx 010 0 1 2
Desp. y rotac. 11011 0 00110 11xx 101 0 0 2
0 00000 +
Nada 11011 0 00110 11xx 101 0 0 2
Increm. Cont 11011 0 00110 11xx 101 0 0 3
Desp. y rotac. 11011 0 00011 011x 010 1 0 3
1 00101 +
Resta 11011 1 01000 011x 010 1 0 3
Increm. Cont 11011 1 01000 011x 010 1 0 4

Desp. y rotac. 11011 1 10100 0011 001 0 1 4  Fin

NOTA 1: “Resta” supone sumar lo que hay en R3 con 1 00101 (-27) y “Suma” supone
sumar lo que hay en R3 con 0 11011 (+27).

NOTA 2: R2 y R4 podrían ser el mismo registro, ya que a medida que van entrando bits
desde la izquierda a R4, van dejando de ser necesarios los mismos bits en R2.

NOTA 3: Obsérvese que el valor de la columna R1 del multiplicando R1 no varía en el


proceso, con lo cual se podría prescindir de ella. Simplemente se suma o resta, según el
caso, con C R3.

1
2.- Realizar la multiplicación de los números 38 (multiplicando) y -6
(multiplicador) empleando representación binaria en complemento a 2 con
el mínimo número de bits y utilizando para ello el algoritmo apropiado.
Vamos a multiplicar +38 (multiplicando) por -6 (multiplicador) con el algoritmo de
Booth

+38  0 100110 +6  0 110


-38 1 011010 - 6  1 010

Operación C R3 R2=R4 R2-1 Contador


Inicio 0 000000 101 0 0 0
0 000000 +
Nada 0 000000 101 0 0 0
Increm. Cont 0 000000 101 0 0 1
Desp. y rotac. 0 000000 010 1 0 (*) 1
1 011010 +
Resta 1 011010 010 1 0 1
Increm. Cont 1 011010 010 1 0 2
Desp. y rotac. 1 101101 001 0 1 (*) 2
0 100110 +
Suma 0 010011 001 0 1 2
Increm. Cont 0 010011 001 0 1 3
Desp. y rotac. 0 001001 100 1 0 (*) 3
1 011010 +
Resta 1 100011 100 1 0 3
Increm. Cont 1 100011 100 1 0 4

Desp. y rotac. 1 110001 1100 0 1 (*) 4  Fin

NOTA 1: “Resta” supone sumar lo que hay en R3 con 1 011010 (-38) y “Suma” supone
sumar lo que hay en R3 con 0 100110 (+38).

NOTA 2: se han unido en un único registro R2 y R4.

NOTA 3: Se ha prescindido de la columna R1.

(*): El anterior bit R2-1, tras desplazarse a la derecha, se pierde.

2
3.- Multiplique, empleando el algoritmo adecuado, (13) x (-10) siendo +13
el multiplicando y -10 el multiplicador.

+13  +R1 = 0 1101 +10  0 1010

-13  -R1 = 1 0011 - 10 1 0110

Operación C R3 R4=R2 R2-1 Comentarios

Inicio 00000 10110 0 No hay cambio de bit

Desplazamiento derecha 00000 01011 0 (*) Comienza cadena unos

Resta 10011+

Resultado resta 10011 01011 0

Desplazamiento derecha 11001 10101 1 (*) No hay cambio de bit

Desplazamiento 11100 11010 1 (*) Comienza cadena ceros

Suma 01101+

Resultado suma 01001 11010 1

Desplazamiento derecha 00100 11101 0 (*) Comienza cadena unos

Resta 10011+

Resultado resta 10111 11101 0

Desplazamiento 11011 11110 1 (*) Fin

NOTA: “Resta” supone sumar lo que hay en la parte alta con 1 0011 (-13) y “Suma”
supone sumar lo que hay en la parte alta con 0 1101 (+13).

(*): El anterior bit R2-1, tras desplazarse a la derecha, se pierde.

3
DIVISIÓN
4. Realice la operación 38 dividido entre 6, aplicando un algoritmo de
división CON y SIN restauración. Escribir todo el desarrollo del algoritmo.
CON RESTAURACIÓN

38 → 0 100110 +6 → 0 110 (+R2)


- 6 → 1 010 (-R2)

Operación R1 R3 Comentarios
Inicio 0100 110
Resta siempre 1010+
Resultado resta 1110 110 ¿R1-R2 <0? Sí
Suma para restaurar 0110+
Suma restaurada 0100 110 0 R3 0
Desplazamiento izquierda 1001 10
Resta siempre 1010+
Resultado resta 0011 10 ¿R1-R2 <0? No
Desplazamiento izquierda 0111 0 01 R3 1
Resta siempre 1010+
Resultado resta 0001 0 ¿R1-R2 <0? No
011 R3 1
Desplazamiento izquierda 0010
Resta siempre 1010+
Resultado resta 1100 ¿R1-R2 <0? Sí
Suma para restaurar 0110+
Resultado suma 0010 0110 R3 0

Resto Cociente

NOTA: Cuando se dice R3 0 para el caso de que sea necesaria la


restauración, el BS se refiere al que se produjo después de “Resta siempre”
(dos líneas más arriba), aunque se escriba, para mayor claridad, después de
calcular la suma restaurada.

4
SIN RESTAURACIÓN

38 → 0 100110 +6 → 0 110 (+R2)


- 6 → 1 010 (-R2)

Operación R1 R3 Comentarios
Inicio 0100 110
Resta inicial siempre 1010+
Resultado resta 1110 110 ¿BS? 1
0 R3 BS(R1)’. SUMA
Desplazamiento 1101 10
Suma 0110+
Resultado suma 0011 10 ¿BS? 0
01 R3BS(R1)’. RESTA
Desplazamiento 0111 0
Resta 1010+
Resultado resta 0001 0 ¿BS? 0
011 R3 BS(R1)’. RESTA
Desplazamiento 0010
Resta 1010+
Resultado resta 1100 ¿BS? 1
Restauración resto (*) 0110+ 0110 R3 BS(R1)’
Desplazamiento 0010

Resto Cociente

NOTA: El bit de signo resultante de hacer las sumas y las restas establece
qué bit se mete por la derecha en R3 y establece si sumar o restar en el
siguiente bucle.
(*) Hay que restaurar el resto al salir negativo, aunque le procedimiento sea SIN
RESTAURACIÓN

5
5. Dividir el número 225 entre 9 utilizando representación binaria sin signo
con el mínimo número posible de bits y empleando el algoritmo de división
CON restauración.

+ 225 0 11100001 +9 → 0 1001 (+R2)


- 9 → 1 0111 (-R2)

Operación R1 R3 Comentarios
Inicio 01110 0001
Resta siempre 10111+
Resultado resta 00101 0001 ¿R1-R2 <0? No
1 R3 1
Desplazamiento izquierda 01010 001
Resta siempre 10111+
Resultado resta 00001 001 ¿R1-R2 <0? No
11 R3 1
Desplazamiento izquierda 00010 01
Resta siempre 10111+
Resultado resta 11001 0100 ¿R1-R2 <0? Sí
Suma para restaurar 01001+
Suma restaurada 00010 01 110 R3 0
Desplazamiento izquierda 00100 1
Resta siempre 10111+
Resultado resta 11011 1 ¿R1-R2 <0? Sí
Suma para restaurar 01001+
Suma restaurada 00100 1 1100 R3 0
Desplazamiento izquierda 01001
Resta siempre 10111+
Resultado resta 00000 ¿R1-R2 <0? No
11001 R3 1

Resto Cociente

NOTA: Cuando se dice R3 0 para el caso de que sea necesaria la


restauración, el BS se refiere al que se produjo después de “Resta siempre”
(dos líneas más arriba), aunque se escriba, para mayor claridad, después de
calcular la suma restaurada.

6
6. Realice la división 117 / 9 con y sin restauración.

117 → 0 1110101 +9 → 0 1001 (+R2)


- 9 → 1 0111 (-R2)

CON RESTAURACIÓN

Operación R1 R3 Comentarios
Inicio 01110 101
Resta siempre 10111+
Resultado resta 00101 101 ¿R1-R2 <0? No
1 R3 1
Desplazamiento izquierda 01011 01
Resta siempre 10111+
Resultado resta 00010 01 ¿R1-R2 <0? No
11 R3 1
Desplazamiento izquierda 00100 1
Resta siempre 10111+
Resultado resta 11011 1 ¿R1-R2 <0? Sí
Suma para restaurar 01001+
Suma restaurada 00100 1 110 R3 0
Desplazamiento izquierda 01001
Resta siempre 10111+
Resultado resta 00000 ¿R1-R2 <0? No
1101 R3 1

Resto Cociente

7
117 → 0 1110101 +9 → 0 1001 (+R2)
- 9 → 1 0111 (-R2)

SIN RESTAURACIÓN

Operación R1 R3 Comentarios

Inicio 01110 101


Resta inicial siempre 10111+
Resultado resta 00101 101 ¿BS? 0
1 R3 BS(R1)’. RESTA
Desplazamiento 01011 01
Resta 10111+
Resultado resta 00010 01 ¿BS? 0
11 R3BS(R1)’. RESTA
Desplazamiento 00100 1
Resta 10111+
Resultado resta 11011 1 ¿BS? 1
110 R3 BS(R1)’. SUMA
Desplazamiento 10111
Suma 01001+
Resultado suma 00000 ¿R1 <0? No
Desplazamiento 00000 1101 R3 BS(R1)’

Resto Cociente

NOTA: El bit de signo resultante de hacer las sumas y las restas establece
qué bit se mete por la derecha en R3 y establece si sumar o restar en el
siguiente bucle.

8
PUNTO FLOTANTE
7. Represente según el formato del IEEE754 el número real: 15.2 Exprese
el resultado en hexadecimal. Obtenga la aproximación por truncación y por
redondeo.

15,2 = 1111,0011 0011 0011 0011 0011 x 20 = 1,M x 23

0,2x=0,4 0,4x2=0,8 0,8x2=1,6 0,6x2=1,2 0,2x2=0,4 … y así


sucesivamente. El bloque 0011 se repite periódicamente.

siendo M=1110011 0011 0011 … (hasta completar 23 bits)

Por tanto

S  EXP+127   MANTISA 
0 100 0001 0 111 0011 0011 0011 0011 0011

O bien, en hexadecimal,

4 1 7 3 3 3 3 3

Éste es el resultado truncando. Si se redondea, 011 se sustituye por 100,


con lo que quedaría, en hexadecimal, 4173 3334.

8. Represente el número +2,71 según el estándar IEEE 754, expresando el


resultado en hexadecimal. Si necesitase más decimales que los que el
formato es capaz de representar, utilice truncatura (1,2 puntos).
2  10

0,71x2=1,42 0,36x2=0,72 0,76x2=1,52 0,16x2=0,32 0,56x2=1,12 0,96x2=1,92

0,42x2=0,84 0,72x2=1,44 0,52x2=1,04 0,32x2=0,64 0,12x2=0,24 0,92x2=1,84

0,84x2=1,68 0,44x2=0,88 0,04x2=0,08 0,64x2=1,28 0,24x2=0,48

0,68x2=1,36 0,88x2=1,76 0,08x2=0,16 0,28x2=0,56 0,48x2=0,96

0,71  0,1011010111000010100011

2,71  10,1011010111000010100011 x 20 = 1,01011010111000010100011 x 21

9
Exponente + 127 = 128, binario 10000000
S EXP+127 MANTISA

0 10000000 0101101 011100001010 0011

4 0 2 D 7 0 A 3

9. Determiné qué número real representa, en el mismo formato IEEE 754,


el hexadecimal C8860800. (0,8 puntos).

C 8 8 6 0 8 0 0

1 1001000 1 000011000001000 0000 0000

Signo - Exponente + 127 = 128+16+1 Exponente = 18

Valor = -1,000011000001 x 218 = -1000011000001 x 26 = -4.289 x 64 = - 274.496

10
OTROS TIPOS
10. Se sabe que al realizar una operación con el Algoritmo de Booth se
ejecuta la siguiente secuencia de operaciones DRDDSDRD (R: resta, S:
suma; D: desplazamiento). Si el resultado de la operación ha sido 9C
(expresado en hexadecimal), ¿cuál era el multiplicando? (1,2 puntos).

El primer bit (de la derecha) siempre es 0 (R2-1=0)


D: No hay cambio de bit, por tanto, se mantiene el 0 0
R: Resta. Comienza cadena de unos 10
D: Desplazamiento necesario, es parte del proceso
D: No hay cambio de bit, por tanto, se mantiene el 1 110
S: Suma. Comienza cadena de ceros 0110
D: Desplazamiento necesario, es parte del proceso
R: Resta. Comienza cadena de unos 10110
D: Desplazamiento necesario, es parte del proceso

Por tanto, el multiplicador es 10110, que en complemento a 2 representa


-10. Como el producto es 9C, 10011100, que en complemento a 2
representa -100, el multiplicador es -100/-10 = +10.

11. Al multiplicar dos números utilizando el algoritmo de Booth es preciso


realizar la siguiente secuencia de operaciones (D = desplazamiento
aritmético a derecha, R = resta y S = suma): RDSDDRD y se obtiene como
producto +49. ¿Cuál ha sido el multiplicando (M) utilizado, expresado en
decimal?

El primer bit (de la derecha) siempre es 0 (R2-1=0)


R: Resta. Comienza cadena de unos 1
D: Desplazamiento necesario, es parte del proceso
S: Suma. Comienza cadena de ceros 01
D: Desplazamiento necesario, es parte del proceso
D: No hay cambio de bit, por tanto, se mantiene el 0 001
R: Resta. Comienza cadena de unos 1001
D: Desplazamiento necesario, es parte del proceso

El multiplicador es, en complemento a 2, 1001, cuyo valor decimal


corresponde a -7. Como el producto es +49, el multiplicando será +7.

11