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



Documentos relacionados
EJERCICIOS RESUELTOS DEL TEMA 5

SUMA DESPLAZAMIENTO. Comprobación: = =216. Multiplicar 12 x 18 (resultado 216)

Divisores Binarios. D = d *Q + R. con la condición de que el resto sea menor que el divisor, es decir 0 R d.

LECCIÓN 1. CIRCUITOS ARITMÉTICOS DE SUMA Y RESTA DE ENTEROS

+18 = =

POTENCIAS. MÚLTIPLOS Y DIVISORES. MÁXIMO COMÚN DIVISOR Y MÍNIMO COMÚN MÚLTIPLO.

en coma flotante Oliverio J. Santana Jaria Sistemas Digitales Ingeniería Técnica en Informática de Sistemas Curso

Los números naturales son aquellos números que utilizamos para contar. cosas. Los números naturales empiezan en el 0 y nunca se acaban.

Universidad Tecnológica Nacional Facultad Regional Tucumán Ingeniería Electrónica Asignatura: Informática I 1R2 Trabajo Práctico N 1 - Año 2015

Unidad 1 Números. Los números naturales son aquellos que se utilizan para contar los elementos de un conjunto.

Ámbito Científico y Tecnológico. Repaso de números enteros y racionales

UNIDAD DE APRENDIZAJE II UNIDAD DE APRENDIZAJE 2 ( 12 HORAS)

UNIDAD 1. NÚMEROS NATURALES Y OPERACIONES

SISTEMAS DE NUMERACIÓN

Los números naturales

LOS NÚMEROS DECIMALES DESCOMPOSICIÓN DE NÚMEROS DECIMALES. 28,246 = 2D + 8 U + 2d + 4 c + 6 m 28,246 = ,2 + 0,04 + 0,006

SESIÓN 1 PRE-ALGEBRA, CONCEPTOS Y OPERACIONES ARITMÉTICAS BÁSICAS

Fracciones. 1. Concepto de fracción 1.a. Las fracciones en nuestra vida Lee el texto de pantalla. 1.b. Definición y elementos de una fracción

Los números enteros. > significa "mayor que". Ejemplo: 58 > 12 < significa "menor que". Ejemplo: 3 < 12 Cualquier número positivo siempre es mayor

Definición(2) La base (r) de un sistema de numeración especifica el número de dígitos o cardinal* de dicho conjunto ordenado. Las bases más utilizadas

Introducción al análisis numérico

SUMA, RESTA, MULTIPLICACIÓN Y DIVISIÓN DE NÚMEROS NATURALES

Actividades de Cognitiva Matemáticas que recogen las diversas estrategias de cálculo metal / reflexivo

IDENTIDAD EN PRECISIÓN VARIABLE

Si dividimos la unidad en 10 partes iguales, cada una de ellas es una décima.

Tipos de Datos y Representaciones. Circuitos Digitales, 2º de Ingeniero de Telecomunicación. EITE ULPGC.

Organización de Computadoras Apunte 2: Sistemas de Numeración: Punto Flotante

Tema 1. Números naturales, operaciones y divisibilidad. El trabajo en equipo y el trabajo científico.

k k N b Sistemas Númericos Sistemas con Notación Posicional (1) Sistemas con Notación Posicional (2) Sistemas Decimal

MATEMÁTICAS 2º ESO. TEMA 1

Operaciones con fracciones I

Fracciones numéricas enteras

OPERACIONES ALGEBRAICAS FUNDAMENTALES

Introducción Definición Clasificación Sist. Binario Sist. Octal Sist. Hexa. Arti. Binaria

operaciones inversas Para unificar ambas operaciones, se define la potencia de exponente fraccionario:

CURSO BÁSICO DE MATEMÁTICAS PARA ESTUDIANTES DE ECONÓMICAS Y EMPRESARIALES. Unidad didáctica 4. Números reales y números complejos

6to GRADO. Operaciones con decimales HOJAS DE TRABAJO

APUNTES DE MATEMÁTICAS

Universidad Rey Juan Carlos HOJA DE PROBLEMAS TEMA 3: REPRESENTACIÓN DE LA INFORMACIÓN

NOTACIÓN CIENTÍFICA Y CIFRAS SIGNIFICATIVAS. GRM. Física I. Semestre

Conversión decimal->binario

CURSOSO. Aritmética: Númerosnaturalesyenteros. Númerosracionalesyfraciones. MATEMÁTICAS. AntonioF.CostaGonzález

SISTEMA DE NUMERACIÓN DECIMAL Ante período

UNIDAD 4. NÚMEROS DECIMALES Y OPERACIONES

Representación de los números naturales

4. Aritmética y operadores

1. El sistema de los números reales

POTENCIAS Y RAÍCES CUADRADAS CON NUMEROS NATURALES. EXPONENTE: Indica las veces que se repite la base

Ejercicios Representación de la información

4. Aritmética y operadores

Unidad 1. Números naturales

SUMA, RESTA Y MULTIPLICACIÓN DE NÚMEROS NATURALES

Victoria Aguilera Fernández

PROBLEMAS DE DIAMANTE 2.1.1

Notas del cursos. Basadas en los prontuarios de MATE 3001 y MATE 3023

1 Números racionales

Operaciones básicas con números enteros y con fracciones

Guía 4. FRACCIONARIOS: si al menos uno de sus términos contiene letras en su denominador

2 POTENCIAS Y RAÍCES CUADRADAS

NÚMEROS ENTEROS. En la recta numérica se pueden representar los números naturales, el cero y los números negativos.

TRABAJO: Cocientes obtenidos en una división entre polinomios en los que el grado del dividendo es inferior al grado del divisor

Ejercicio 1: Realiza las siguientes divisiones por el método tradicional y por Ruffini: a)

TEMA 1 Números enteros y racionales *

Capítulo 4 Representación interna de los Datos

Sumar es reunir varias cantidades en una sola.

UNIDAD 1: NÚMEROS NATURALES

TEMA 3. POLINOMIOS Y FRACCIONES ALGEBRAICAS. Ficha 0

Números enteros. 1. En una recta horizontal, se toma un punto cualquiera que se señala como cero.

TEMA 2. En esta unidad didáctica se da un repaso teórico general y se realizan una serie de actividades sencillas de aplicación.

III. NÚMEROS DECIMALES

Computación I Representación Interna Curso 2017

Números decimales Lectura de las fracciones decimales

Una matriz es una tabla ordenada (por filas y columnas) de escalares a i j de la forma: a

Representación de números enteros: el convenio complemento a dos

3.2. Conceptos generales. (A) Una fracción es el cociente, razón o división de dos números enteros. El dividendo se llama

Las fracciones son unos números especiales que expresan las partes iguales que tomamos del total en que se ha dividido la unidad.

SISTEMAS DE NUMERACIÓN

Universidad Politécnica de Puerto Rico Departamento de Ciencias y Matemáticas. Preparado por: Prof. Manuel Capella-Casellas, M.A.Ed.

FRACCIONES Y NÚMEROS RACIONALES. obtienen al dividir la unidad en n partes iguales.

Representación de números en binario

MATEMÁTICAS 5º PRIMARIA DIVISIBILIDAD: MÚLTIPLOS Y DIVISORES

TEMA 2. Números racionales. Teoría. Matemáticas

LOGICA DIGITAL ARITMETICA DE COMPUTADORAS ASPECTOS FUNDAMENTALES 1. FORMA DE REPRESENTAR LOS NUMEROS ( FORMATO BINARIO)

Organización de Computadoras. Clase 3

LOGARITMOS. El logaritmo de un número es, entonces, el exponente a que debe elevarse otro número que llamado base, para que dé el primer número.

Diseño de Operadores Aritméticos en Punto Flotante usando FPGAs

IV NÚMEROS FRACCIONARIOS.

Unidad didáctica 1. Operaciones básicas con números enteros

TEMA 1: NÚMEROS REALES

Primera versión del Algoritmo y Hardware de la Multiplicación.

UNIDAD DE APRENDIZAJE II

Representación de números enteros: el convenio complemento a uno

SISTEMAS DE NUMERACION

TEMA 6. LAS FRACCIONES. Fraccionar es dividir en partes iguales. Se puede fraccionar en las partes que se quiera siempre que sean iguales.

UNIDAD 1. NÚMEROS. (Página 223 del libro) Nivel II. Distancia. Ámbito Científico Tecnológico.

UNIDAD 3: NÚMEROS DECIMALES

La velocidad no lleva a ninguna parte si no se va en la dirección correcta. Proverbio Americano. Punto Flotante

DESCOMPOSICIÓN FACTORIAL

lasmatemáticas.eu Pedro Castro Ortega materiales de matemáticas

Algoritmos Multiplicación División

Transcripción:

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

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

La ALU dentro del computador

Operaciones lógicas: desplazamientos

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

MULTIPLICACIÓN BINARIA SIN SIGNO: SUMA DESPLAZAMIENTO

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

Ejemplo 6x9=54 inicial Primera suma parcial acumulada Segunda suma parcial acumulada 0 1 1 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0 0 1 1 0 1 1 0 x Ultima suma parcial acumulada (RESULTADO)

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

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

Arquitectura R1 Contador CON R2 C R3 R4

Algoritmo Suma Desplazamiento Se 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

Inicio, R3 0, Cont 0 R1 A R2 B R2 0? 1 R3 R3+R1 Incrementa contador C-R3-R4 desplaza derecha 0 R2 rota circul NO Cont? SI Fin SUMA DESPLAZAMIENTO

Ejemplo Multiplicar A=0110 por B=1001 El resultado debe ser 6x9=54 (en binario 0011 0110) R1 Contador R2 C R3 R4

Inicialización Se carga A en R1 y B en R2. Se pone a 0 el registro R3 y el contador Contador 0110 0 1001 0 0000 XXXX

Comprobación de R2 0 y acción Como el LSB de R2 es 1 se suman R3 + R1 y se deja el resultado en R3 Contador 0110 0 1001 0 0110 XXXX

Incremento contador Se incrementa el contador en una unidad Contador 0110 1 1001 0 0110 XXXX

Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una posición a la derecha Contador 0110 1 1001 0 0011 0XXX

Rotación circular de R2 El registro R2 rota a la derecha de forma circular Contador 0110 1 1100 0 0011 0XXX

Ha llegado al final? Comprueba que el contador no es 4 y repite el bucle Contador 0110 1 1100 0 0011 0XXX

Comprobación de R2 0 y acción 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 Contador 0110 1 1100 0 0011 0XXX

Incremento contador Se incrementa el contador en una unidad Contador 0110 2 1100 0 0011 0XXX

Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una posición a la derecha Contador 0110 2 1100 0 0001 10XX

Rotación circular de R2 El registro R2 rota a la derecha de forma circular Contador 0110 2 0110 0 0001 10XX

Ha llegado al final? Comprueba que el contador no es 4 y repite el bucle Contador 0110 2 0110 0 0001 10XX

Comprobación de R2 0 y acción 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 Contador 0110 2 0110 0 0001 10XX

Incremento contador Se incrementa el contador en una unidad Contador 0110 3 0110 0 0001 10XX

Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una posición a la derecha Contador 0110 3 0110 0 0000 110X

Rotación circular de R2 El registro R2 rota a la derecha de forma circular Contador 0110 3 0011 0 0000 110X

Ha llegado al final? Comprueba que el contador no es 4 y repite el bucle Contador 0110 3 0011 0 0000 110X

Comprobación de R2 0 y acción Como el LSB de R2 es 1 se suman R3 + R1 y se deja el resultado en R3 Contador 0110 3 0011 0 0110 110X

Incremento contador Se incrementa el contador en una unidad Contador 0110 4 0011 0 0110 110X

Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una posición a la derecha Contador 0110 4 0011 0 0011 0110

Rotación circular de R2 El registro R2 rota a la derecha de forma circular Contador 0110 4 1001 0 0011 0110

Ha llegado al final? Comprueba que el contador es 4 y acaba. El resultado está en el registro R3 seguido de R4 Contador 0110 4 0011 0 0011 0110

Otro ejemplo Multiplicar A=1001 por B=0110 El resultado debe ser 9x6=54 (en binario 0011 0110) R1 Contador R2 C R3 R4

Inicialización Se carga A en R1 y B en R2. Se pone a 0 el registro R3 y el contador Contador 1001 0 0110 0 0000 XXXX

Comprobación de R2 0 y acción 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 Contador 1001 0 0110 1001 0110 00000 0 0000 XXXX

Incremento contador Se incrementa el contador en una unidad Contador 1001 1 0110 0 0000 XXXX

Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una posición a la derecha Contador 1001 1 0110 1001 0110 00000 00000 0 0 0000 0XXX

Rotación circular de R2 El registro R2 rota a la derecha de forma circular Contador 1001 1 0011 0 0000 0XXX

Ha llegado al final? Comprueba que el contador no es 4 y repite el bucle Contador 1001 1 0011 0 0000 0XXX

Comprobación de R2 0 y acción Como el LSB de R2 es 1 se suman R3 + R1 y se deja el resultado en R3 Contador 1001 1 0011 0 1001 0XXX 1001 0110 00000 0000 0 1001+ 01001 0

Incremento contador Se incrementa el contador en una unidad Contador 1001 2 0011 0 1001 0XXX

Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una posición a la derecha Contador 1001 2 0011 0 0100 10XX 1001 0110 00000 0000 0 1001+ 01001 0 00100 10

Rotación circular de R2 El registro R2 rota a la derecha de forma circular Contador 1001 2 1001 0 0100 10XX

Ha llegado al final? Comprueba que el contador no es 4 y repite el bucle Contador 1001 2 1001 0 0100 10XX

Comprobación de R2 0 y acción Como el LSB de R2 es 1 se suman R3 + R1 y se deja el resultado en R3 Contador 1001 2 1001 0 1101 10XX 1001 0110 00000 0000 0 1001+ 01001 0 0100 10 1001+ 01101 10

Incremento contador Se incrementa el contador en una unidad Contador 1001 3 1001 0 1101 10XX

Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una posición a la derecha Contador 1001 3 1001 0 0110 110X 1001 0110 00000 0000 0 1001+ 01001 0 0100 10 1001+ 01101 10 00110 110

Rotación circular de R2 El registro R2 rota a la derecha de forma circular Contador 1001 3 1100 0 0110 110X

Ha llegado al final? Comprueba que el contador no es 4 y repite el bucle Contador 1001 3 1100 0 0110 110X

Comprobación de R2 0 y acción 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 Contador 1001 3 1100 0 0110 110X 1001 0110 00000 0000 0 1001+ 01001 0 0100 10 1001+ 01101 10 0110 110 0000+ 00110 110

Incremento contador Se incrementa el contador en una unidad Contador 1001 4 1100 0 0110 110X

Desplazamiento a derecha Se desplaza en conjunto C-R3-R4 una posición a la derecha Contador 1001 4 1100 0 0011 0110 1001 0110 00000 0000 0 1001+ 01001 0 0100 10 1001+ 01101 10 0110 110 0000+ 00110 110 0011 0110

Rotación circular de R2 El registro R2 rota a la derecha de forma circular Contador 1001 4 0110 0 0011 0110

Ha llegado al final? Comprueba que el contador es 4 y acaba. El resultado está en el registro R3 seguido de R4 Contador 1001 4 0110 0 0011 0110 1001 0110 00000 0000 0 1001+ 01001 0 0100 10 1001+ 01101 10 0110 110 0000+ 00110 110 0011 0110

MULTIPLICACIÓN BINARIA SIN SIGNO: SUMAS Y RESTAS

Fundamentos (I) Progresión geométrica de razón r y primer término a 1 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 a 1 y cuya razón es r, viene dada por También se puede ver de la forma r 1 S a r 1 n r n 1 S a1 a1r... a1r n 1 rs a1 r... a1r 1 1 r 1 a 1 S a r 1 n ultimoxrazon r 1 a r a 1 primero Si r =2, el denominador se hace 1 y queda que la suma es el doble del último término, menos el primero n

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 2 4 +2 3 +2 2 Según lo visto anteriormente, 2 4 +2 3 +2 2 = 2 2 4-2 2= 2 5-2 2

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 2 m 2 m 1... 2 m n 1 2 m n 2 m Si llamamos k = m + n, se puede poner 2 k 2 m 2 k 1 2 k 2... 2 m

Fundamentos (IV) Ejemplo 2 6 2 3 2 5 2 4 2 3 Por tanto, multiplicar un número por 111000, es equivalente a multiplicarlo por 6 2 Posteriormente se multiplica por 3 2 Finalmente se restan A (0111000)=A (2 5 +2 4 +2 3 )=A (2 6-2 3 )

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 (2 7 + 2 6 ) + A (2 3 + 2 2 + 2 1 ) O lo que es lo mismo a: A (2 8 2 6 ) + A (2 4 2 1 ) = A (2 8 2 6 + 2 4 2 1 )

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)

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 2 s ) 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 2 t ) 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

Ejemplo (continuación) Valor -24 +48-96 +192 12 x 10 = 120 (base 10) A 2 A 2 1 2 3 A 2 4 A 2 A=1100 B=01010 -A=1 10100 7 6 5 4 3 2 1 0 1 1 1 0 1 0 0 0 0 0 1 1 0 0 0 0 1 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 Suma -24 +24-72 +120 (-2 + 4-8+ 16) x12 = 120

A= 0 011001 -A = 1 100111 B= 010111 Otro ejemplo 25 x 23 = 575 10 9 8 7 6 5 4 3 2 1 0 -A 2 0 1 1 1 1 1 1 0 0 1 1 1 +A 2 3 0 0 0 1 1 0 0 1 0 0 0 + S P 0 0 0 1 0 1 0 1 1 1 1 -A 2 4 1 1 0 0 1 1 1 0 0 0 0 + S P 1 1 1 0 0 0 1 1 1 1 1 +A 2 5 0 1 1 0 0 1 0 0 0 0 0 + S T 0 1 0 0 0 1 1 1 1 1 1 575 = 2 9 + 2 5 + 2 4 + 2 3 + 2 2 + 2 1 + 2 0

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

Arquitectura R1 Contador CON R2 C R3 R4

Algoritmo de Sumas y Restas Se 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 R2 0, el LSB de R2, y se llama R2-1 al bit donde irá a parar R2 0 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 R3 R3-R1 En los sucesivos bucles se aplica el siguiente criterio: Si es el principio de una cadena de unos, se hace la resta R3 R3 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

Inicio, Cont 0 R1 A R2 B R3 0 R2-1 0 empieza cadena de unos 10 R3 R3-R1 R2 0 R2-1? 00 11 01 empieza cadena de ceros R3 R3+R1 Incrementa contador ALGORITMO DE SUMAS Y RESTAS C-R3-R4 Desplazamiento a la derecha Rotación circular R2 NO Cont? SI R3 R3+R1 Fin

Ejemplo Multiplicar A=1100 por B=1010 El resultado debe ser 12x10=120 (en binario 0111 1000) R1 Contador R2 R2 0 C R3 R4 R2-1

Inicialización Se carga A en R1 y B en R2. Se pone a 0 C, el registro R3, el Contador y R2-1 12 Contador 1100 0 R2 0 1 0 1 0 0 10 0 XXXX 0000 R2-1

Comprobación de R2 0 y acción 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 Contador 1100 0 R2 0 1 0 1 0 0 0 XXXX 0000 R2-1

Incremento contador Se incrementa el contador en una unidad Contador 1100 1 R2 0 1 0 1 0 0 0 XXXX 0000 R2-1

Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una posición a la derecha Contador 1100 1 R2 0 1 0 1 0 0 0 0XXX 0000 R2-1

Rotación circular de R2 El registro R2 rota a la derecha de forma circular Contador 1100 1 R2 0 0 1 0 1 0 0 0XXX 0000 R2-1

Ha llegado al final? Comprueba que el contador no es 4 y repite el bucle 12 Contador 1100 1 R2 0 0 1 0 1 0 0 0XXX 0000 R2-1 0

Comprobación de R2 0 y acción 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 Contador 1100 1 R2 0 0 1 0 1 0 1 0XXX 0100-12 -24 R2-1

Incremento contador Se incrementa el contador en una unidad Contador 1100 2 R2 0 0 1 0 1 0 1 0XXX 0100 R2-1

Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una posición a la derecha Contador 1100 2 R2 0 0 1 0 1 0 1 00XX 1010-6 -24 R2-1

Rotación circular de R2 El registro R2 rota a la derecha de forma circular Contador 1100 2 R2 0 0 0 1 0 1 1 00XX 1010 R2-1

Ha llegado al final? Comprueba que el contador no es 4 y repite el bucle 12 Contador 1100 2 R2 0 0 0 1 0 1 1 00XX 1010 R2-1 -6

Comprobación de R2 0 y acción 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 Contador 1100 2 R2 0 0 0 1 0 1 0 00XX 0110 +6 +24 R2-1

Incremento contador Se incrementa el contador en una unidad Contador 1100 3 R2 0 0 0 1 0 1 0 00XX 0110 R2-1

Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una posición a la derecha Contador 1100 3 R2 0 0 0 1 0 1 0 000X 0011 +3 +24 R2-1

Rotación circular de R2 El registro R2 rota a la derecha de forma circular Contador 1100 3 R2 0 1 0 0 1 0 0 000X 0011 R2-1

Ha llegado al final? Comprueba que el contador no es 4 y repite el bucle 12 Contador 1100 3 R2 0 1 0 0 1 0 0 000X 0011 R2-1 +3

Comprobación de R2 0 y acción 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 Contador 1100 3 R2 0 1 0 0 1 0 1 000X 0111-9 -72 R2-1

Incremento contador Se incrementa el contador en una unidad Contador 1100 4 R2 0 1 0 0 1 0 1 000X 0111 R2-1

Desplazamiento a derecha Se desplaza el conjunto C-R3-R4 una posición a la derecha Contador 1100 4 R2 0 1 0 0 1 0 1 1000 1011-5 -72 R2-1

Rotación circular de R2 El registro R2 rota a la derecha de forma circular 12 Contador 1100 4 R2 0 0 1 0 0 1 1 1000 1011 R2-1 -5

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 Contador 1100 4 R2 0 0 1 0 0 1 0 1000 0111 +7 +120 R2-1

MULTIPLICADOR BINARIO CON SIGNO: ALGORITMO DE BOOTH

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

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

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 (2 n - 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 (2 n - B ) lo que sale aplicando el algoritmo de sumas y restas, en nuestro ejemplo 4x13=52 (binario 00110100) Sea R=2 2n - A B lo que debería salir (el resultado buscado). Téngase en cuenta que la potencia 2 2n 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

Fundamentos (II) La relación entre R* y R es la siguiente R* = A (2 n - B ) = 2 2n - 2 2n +A 2 n A B Como R=2 2n -A B R* = R + A 2 n - 2 2n, donde el valor de 2 2n en los 2n bits menos significativos (donde cabe el producto) es irrelevante Por tanto, R = R* - A 2 n 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 2 n. 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

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 R2 0 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

Inicio, Cont 0 R1 A R2 B R3 0 R4 B R2-1 0 empieza cadena de unos 10 R3 R3-R1 R2 0 R2-1? 00 11 01 empieza cadena de ceros R3 R3+R1 Incrementa contador ALGORITMO DE BOOTH C-R3-R4 Desplazamiento a la derecha Rotación circular R2 NO Cont? SI Fin

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 0011100001 2) = 1+32+64+128 = 225

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 Contador 11001 0 R2 10111 R2 0 0 R2-1 0 00000 R3 10111 R4

Comprobación multiplicador y decisión Comienza cadenas de unos, R3 R3-R1, es decir, se hace 0 00000 + 1 00111 = 1 00111 R1 Contador 11001 0 R2 10111 R2 0 0 R2-1 1-25 00111 R3 10111 R4

Incremento contador Se incrementa el contador R1 Contador 11001 1 R2 10111 R2 0 0 R2-1 1 00111 R3 10111 R4

Desplazamiento a derecha R3 y R4 se desplazan a la derecha, perdiéndose el bit de la derecha de R4 Rota R2 R1 Contador 11001 1 R2 01011 R2 0 1 R2-1 1-13 10011 R3 11011 R4

Ha llegado al final? Comprueba que el contador no es 5 y repite el bucle R1 Contador 11001 1 R2 01011 R2 0 1 R2-1 1 10011 R3 11011 R4

Comprobación multiplicador y decisión No hay cambio de cadena. No se hace nada, salvo comprobar que R2 0 y R2-1 son iguales. R1 Contador 11001 1 R2 01011 R2 0 1 R2-1 1 10011 R3 11011 R4

Incremento contador Se incrementa el contador R1 Contador 11001 2 R2 01011 R2 0 1 R2-1 1 10011 R3 11011 R4

Desplazamiento a derecha R3 y R4 se desplazan a la derecha, perdiéndose el bit de la derecha de R4 Rota R2 R1 Contador 11001 2 R2 10101 R2 0 1 R2-1 1-7 11001 R3 11101 R4

Ha llegado al final? Comprueba que el contador no es 5 y repite el bucle R1 Contador 11001 2 R2 10101 R2 0 1 R2-1 1 11001 R3 11101 R4

Comprobación multiplicador y decisión No hay cambio de cadena. No se hace nada, salvo comprobar que R2 0 y R2-1 son iguales. R1 Contador 11001 2 R2 10101 R2 0 1 R2-1 1 11001 R3 11101 R4

Incremento contador Se incrementa el contador R1 Contador 11001 3 R2 10101 R2 0 1 R2-1 1 11001 R3 11101 R4

Desplazamiento a derecha R3 y R4 se desplazan a la derecha, perdiéndose el bit de la derecha de R4 Rota R2 R1 Contador 11001 3 R2 11010 R2 0 1 R2-1 1-4 11100 R3 11110 R4

Ha llegado al final? Comprueba que el contador no es 5 y repite el bucle R1 Contador 11001 3 R2 11010 R2 0 1 R2-1 1 11100 R3 11110 R4

Comprobación multiplicador y decisión Comienza cadenas de ceros, R3 R3+R1, es decir, se hace 1 11100 + 0 11001 = 0 10101 (-4+25 = +21) R1 Contador 11001 3 R2 11010 R2 0 1 R2-1 0 +21 10101 R3 11110 R4

Incremento contador Se incrementa el contador R1 Contador 11001 4 R2 11010 R2 0 1 R2-1 0 10101 R3 11110 R4

Desplazamiento a derecha R3, R4 y R2-1 se desplazan a la derecha, perdiéndose el bit de la derecha de R4 R1 Contador 11001 4 R2 11101 R2 0 0 R2-1 0 +10 01010 R3 11111 R4

Ha llegado al final? Comprueba que el contador no es 5 y repite el bucle R1 Contador 11001 4 R2 11101 R2 0 0 R2-1 0 01010 R3 11111 R4

Comprobación multiplicador y decisión Comienza cadenas de unos, R3 R3-R1, es decir, se hace 0 01010 +1 00111 = 1 10001 (+10-25 = -15) R1 Contador 11001 4 R2 11101 R2 0 0 R2-1 1-15 10001 R3 11111 R4

Incremento contador Se incrementa el contador R1 Contador 11001 5 R2 11101 R2 0 0 R2-1 1 10001 R3 11111 R4

Desplazamiento a derecha R3, R4 y R2-1 se desplazan a la derecha, perdiéndose el bit de la derecha de R4 R1 Contador 11001 5 R2 01110 R2 0 1 R2-1 1-8 11000 R3 11111 R4

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 Contador 11001 5 R2 01110 R2 0 1 R2-1 1 11000 R3 11111 R4

DIVISIÓN BINARIA SIN SIGNO: CON RESTAURACIÓN

Ejemplo en base 10 79-5 2 9-25 4 5 1 5

79 Ejemplo en base 2 1001111 101-000 01111 1001-101 1001-101 1001-101 1001-101 100 4 5 15

Otro ejemplo en ambas bases 470 111010110 10101-10101 10000 10110-00000 100001-10101 11001-10101 1000-00000 1000-4 8 5 0-4 2 21 22 4 7 0 21 2 8 22

Arquitectura BS R1 0 R3 R2 S/R El contenido de R2 no varía

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

Inicio, R3 0 R1 A (dividendo) R2 B (divisor) R3 1 R1 R1-R2 NO SI R 1 -R 2 <0? R1 R1+R2 R3 0 R1 desplaza izquierda DIVISIÓN CON RESTAURACIÓN NO MSB R3? SI Fin

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, R1 R3 R2 Inicio 01001111 00000000 01010000

R1 R3 R2 Resta R1- R2 NEGATIVO 00000000 01010000 Suma R1+R2 R3 0 R1 01001111 R3 00000000 R2 01010000 Desplazamiento Izquierda R1 R3 R2 1001111 0 00000000 01010000

R1 R3 R2 Resta R1- R2 01001110 POSITIVO 00000000 01010000 Desplazamiento Izquierda R3 1 R1 R3 R2 1001110 0 00000001 01010000

R1 R3 R2 Resta R1- R2 01001100 POSITIVO 00000001 01010000 Desplazamiento Izqda. R3 1 R1 1001100 0 R3 0000001 1 R2 01010000

R1 R3 R2 Resta R1- R2 01001000 POSITIVO 00000011 01010000 Desplazamiento Izqda. R3 1 R1 1001000 0 R3 0000011 1 R2 01010000

R1 R3 R2 Resta R1- R2 01000000 POSITIVO 00000111 01010000 Desplazamiento Izqda. R3 1 R1 1000000 0 R3 0000111 1 R2 01010000

R1 R3 R2 Resta R1- R2 00110000 POSITIVO 00001111 01010000 Desplazamiento Izqda. R3 1 R1 0110000 0 R3 0001111 1 R2 01010000

R1 R3 R2 Resta R1- R2 00010000 POSITIVO 00011111 01010000 Desplazamiento Izqda. R3 1 R1 0010000 0 R3 0011111 1 R2 01010000

Resta R1- R2 R1 R3 R2 NEGATIVO 00111111 01010000 R1 R3 R2 Suma R1+R2 00100000 00111111 01010000 Desplazamiento Izquierda R3 0 R1 0100000 0 R3 0111111 0 R2 01010000

Cifras decimales (I) Según el ejemplo visto: 01001111 1010000 es igual a 01111110 Qué significa esto?

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)

Cifras decimales (III) BASE 2 1001111 / 101000 = 1,111110 BASE 10 (aprox.) 1,96875 BASE 10 (exacto) 79/40=1,975 1001111 / 10100 = 11,11110 3,9375 79/20=3,95 1001111 / 1010 = 111,1110 7,875 79/10=7,9 1001111 / 101 = 1111,110 15,75 79/5=15,8

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

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 R3 R2 Inicio 0110 1011 0101

Resta R1- R2 R1 0001 1011 POSITIVO R3 R2 0101 Desplazamiento Izquierda R3 1 R1 R3 R2 0011 011 1 0101

Resta R1- R2 R1 R3 R2 NEGATIVO 1 0101 Suma R1+R2 R1 0011 011 R3 1 R2 0101 Desplazamiento Izqda. R3 0 R1 0110 11 R3 10 R2 0101

R1 R3 R2 Resta R1- R2 0001 11 POSITIVO 10 0101 Desplazamiento Izqda. R3 1 R1 0011 1 R3 101 R2 0101

Resta R1- R2 R1 R3 R2 NEGATIVO 101 0101 Suma R1+R2 R1 0011 1 R3 101 R2 0101 Desplazamiento Izqda. R3 0 0111 R1 R3 1010 R2 0101

R1 R3 R2 Resta R1- R2 0010 POSITIVO 1010 0101 RESTO Cuando el proceso finaliza, los bits de más han desaparecido COCIENTE R3 10101

DIVISIÓN BINARIA SIN SIGNO: SIN RESTAURACIÓN

Fundamentos (I) En un determinado momento el dividendo residual DR i está en R1 y B, el divisor, fijo en R2 Se resta R2, obteniéndose DR i -B Si dicho resultado fue negativo se vuelve a sumar R2, obteniéndose DR i -B+B, para RESTAURAR el dividendo Se produce un desplazamiento a la izquierda, almacenando en R1 el valor 2 (DR i -B+B) En el paso siguiente, se vuelve a restar B, quedando 2 (DR i - B+B) B, que es igual a 2 (DR i -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

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

Inicio, R3 0, BS 0 R1 A (dividendo) R2 B (divisor) R1 R1-R2 R3 BS(R1) 0 1 BS? BS R1 R1+R2 R3 BS(R1) R1 desplaza izquierda DIVISIÓN SIN RESTAURACIÓN 0 1 MSB R3? Fin

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

Ejemplo Dividir A=11101010 (234 en decimal) entre B=10001001 (137 en decimal) -B=1 01110111 (en complemento a 2) Supongamos que trabajamos con registros de 9 bits, en complemento a 2, BS R1 R3 R2 Inicio 0 11101010 000000000 0 10001001

La primera vez BS=0, por tanto, R1 R1-R2 BS R1 R3 0 11101010 000000000 1 01110111 + R2 010001001 Resta BS Desplaz. 0 01100001 011000010 SÍ CABE 000000001 0

Como BS=0, R1 R1-R2 R1 R3 0 11000010 000000001 1 01110111 + R2 010001001 Resta BS Desplaz. 0 00111001 001110010 SÍ CABE 000000011 0

Como BS=0, R1 R1-R2 R1 R3 0 01110010 000000011 1 01110111 + R2 010001001 Resta BS Desplaz. 1 11101001 111010010 NO CABE 000000110 0

Como BS=1, R1 R1+R2 R1 R3 1 11010010 000000110 0 10001001 + R2 010001001 Suma BS Desplaz. 0 01011011 010110110 SÍ CABE 000001101 0

Como BS=0, R1 R1-R2 R1 R3 0 10110110 000001101 1 01110111 + R2 010001001 Resta BS Desplaz. 0 00101101 001011010 SÍ CABE 000011011 0

Como BS=0, R1 R1-R2 R1 R3 0 01011010 000011011 1 01110111 + R2 010001001 Resta BS Desplaz. 1 11010001 110100010 NO CABE 000110110 0

Como BS=1, R1 R1+R2 R1 R3 1 10100010 000110110 0 10001001 + R2 010001001 Suma BS Desplaz. 0 00101011 001010110 SÍ CABE 001101101 0

Como BS=0, R1 R1-R2 R1 R3 0 01010110 001101101 1 01110111 + R2 010001001 Resta BS Desplaz. 1 11001101 110011010 NO CABE 011011010 0

Como BS=1, R1 R1+R2 R1 R3 1 10011010 000000110 0 10001001 + R2 010001001 Suma BS Desplaz. 0 00100011 001000110 SÍ CABE 110110101 0

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

Cifras decimales (II) El valor exacto sería 234 / 137 = 1,708029197 mientras que el valor que resulta en binario es 1,70703125

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) BS R1 R3 R2 Inicio 0110 1011 0101

La primera vez BS=0, por tanto, R1 R1-R2 BS R1 0 110 1011 1 011 + R3 R2 0101 Resta BS Desplaz. 0 001 1011 0011 011 1

Como BS=0, R1 R1-R2 R1 0 011 011 R3 1 R2 0101 1 011 + Resta BS Desplaz. 1 110 011 1100 11 10

Como BS=1, R1 R1+R2 R1 1 100 11 R3 10 R2 0101 0 101 + Suma BS Desplaz. 0 001 11 0011 1 101

Como BS=0, R1 R1-R2 R1 0 011 1 R3 101 R2 0101 1 011 + Resta BS Desplaz. 1 110 1 1101 1010

Como BS=1, R1 R1+R2 Suma RESTO R1 1 101 0 101 + 0 010 R3 1010 10101 R2 0101 Cuando el proceso finaliza, los bits de más han desaparecido COCIENTE

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

COMA FLOTANTE (II) Todo número se puede representar como M * B exp En IEEE 754 se pueden representar los números en simple precisión (32 bits) y en doble precisión (64 bits) Signo Exponente Mantisa 1bit 8bits 23bits Simple Precisión. Exceso 127 Signo Exponente Mantisa 1bit 10bits 53bits Doble Precisión. Exceso 1023 N = (-1) S * 1.M * 2 (exp-exc)

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 2 0 2,71 1,010110101110000101000011 x 2 1 Mantisa 010110101110000101000011 Exponente +1 Exponente + 127 128 Signo Exponente + 127 Mantisa 0 1 0 0 0 0 0 0 0 010110101110000101000011 En Hexadecimal se podría expresar como 4 0 2 D 7 0 A 3

Ejemplo (II) Determinar qué número real representa el hexadecimal C8860800 El valor binario es 1 100 1000 1 000 0110 0000 1000 0000 Mantisa 000011000001000000 Signo Negativo Exponente +127 128+16+1 Exponente 18 Valor absoluto 1,000011000001 x 2 18 Valor absoluto 1000011000001 x 2 6 Valor real -4.289 x 64 = -274.496

Suma/Resta en coma flotante Dados dos números A = m 1 * B e1 B = m 2 * B e2 Se ajustan las mantisas y los exponentes hasta que e1=e2=e. Entonces tendremos A = m 1 * B e B = m 2 * B e La suma y la resta entonces se realizan de esta forma A + B = (m 1 + m 2 ) * B e Se normalizan los resultados a IEEE 754 A B = (m 1 - m 2 ) * B e

Multiplicación / División en coma flotante Dados dos números A = m 1 * B e1 B = m 2 * B e2 La multiplicación y división se realiza: A * B = (m 1 * m 2 ) * B e1+e2 A / B = (m 1 / m 2 ) * B e1-e2 Se normalizan los resultados a IEEE 754

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

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

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