ARITMÉTICA BINARIA. 1.1 Introducción. 1.2 Sistema Numérico Posicional (binario)

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

Sistemas Numéricos y Códigos Binarios

Aritmética de Enteros

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

Aritmética de Enteros y

Organización de Computadoras Apunte 1: Sistemas de Numeración: Sistemas Enteros y Punto Fijo

Tema 2: Sistemas y códigos numéricos

Titulación: Grado en Ingeniería Informática Asignatura: Fundamentos de Computadores

Computación 1. Representación Interna de Números

5.2. Sistemas de codificación en binario

APUNTES DE CATEDRA: SISTEMAS DE NUMERACION - REPRESENTACION INTERNA DE NUMEROS Y CARACTERES

ESTRUCTURA Y TECNOLOGÍA DE COMPUTADORES I CAPÍTULO III ARITMÉTICA Y CODIFICACIÓN

Sistemas Numéricos. Introducción n a los Sistemas Lógicos y Digitales 2009

MATEMÁTICAS PARA LA COMPUTACIÓN CAPÍTULO 1. SISTEMAS NUMÉRICOS

Representación de datos y aritmética básica en sistemas digitales

1. REPRESENTACION DE DATOS

Representación de datos y aritmética básica en sistemas digitales

REPRESENTACION DE LA INFORMACION

b 1 +a 0 < b ; b=base Forma abreviada: a p-2 ) b Un número se representa por un conjunto de cifras (a i a a 1

Tema 1: Representación de los números

Departamento de Sistemas e Informática. Digital II - ECA. Representación de datos y aritmética básica en sistemas digitales.

Representación de números binarios en punto fijo y punto flotante.

Tema 2. Sistemas de representación de la información

GENERALIDADES SOBRE SISTEMAS NUMÉRICOS. Transversal Programación Básica

Tema 2. Sistemas de representación de la información

Sistemas de Numeración. I semestre 2011

Agenda. 0 Operaciones aritméticas 0 ASCII 0 UTF-8 0 Código Gray. 0 Números de punto flotante

Universidad de San Buenaventura - Facultad de Ingeniería

TEMA V SISTEMAS DE NUMERACIÓN

SISTEMAS DIGITALES. Margarita Pérez Castellanos

5 centenas + 2 decenas + 8 unidades, es decir: = 528

TEMA 2. CODIFICACIÓN DE LA INFORMACIÓN

Realizar la siguiente suma y expresar el resultado en hexadecimal: Teniendo los 3 valores expresados en la misma base, podemos realizar la suma:

Organización del Computador 1. Sistemas de numeración y representación de la información

Representación binaria de números enteros en complemento a 2

+- S x B +-E. Este estándar presupone una representación normalizada. Es decir, los números a representar obedecen a la siguiente forma:

Lógica Computacional. Aritmética binaria

REPRESENTACION DE LA INFORMACION

SISTEMAS DE NUMERACIÓN

Sistemas de Numeración

Organización del Computador 1. Sistemas de Representación

LÓGICA SECUENCIAL Y COMBINATORIA

APUNTES DOCENTES ASIGNATURA: ANALISIS NUMERICO ASIGNATURA: ANALISIS NUMERICO UNIDADES TECNOLÓGICAS DE SANTANDER

Computación I Representación Interna Curso 2011

Conceptos previos. Revisión de Sistemas Lógicos Formatos Numéricos. Dpto. Ingeniería Electrónica y Comunicaciones

Se detecta cuando el resultado requiera n+1 bits siendo que la representación solo utiliza n bits.

Sistemas numéricos -números negativos- Taller de programación

SISTEMAS DE NUMERACION

Práctica 1 - Representación de la información

I. INTRODUCCIÓN. A cada valor de una señal digital se le llama bit y es la unidad mínima de información.

Circuitos Electrónicos Digitales

Tema 2: Sistemas de numeración

Arquitectura de Computadoras

TRABAJO DE INVESTIGACION SOBRE LAS CONVERCIONES DE LOS SISTEMAS NUMERICOS JIMMY DADNOVER ROZO GUERRERO

TEMA III: OPERACIONES CON LOS DATOS

Bases Numéricas. Por ejemplo: El valor en combinación de los símbolos 234 es determinado por la suma de los valores correspondientes a cada posición:

Representación de números enteros: el convenio exceso Z

1.4.3 Errores de redondeo y la aritmética finita de las computadoras

Circuitos electrónicos digitales

Representación de la Información.... en los Computadores


OCW-V.Muto Sistemas de numeración Cap. III CAPITULO III. SISTEMAS DE NUMERACION 1. REPRESENTACION DE LA INFORMACION

Tema 2: Representación Digital de la Información

Ingeniería en Computación

Computadores y Comunicaciones. Tema 3: Representación Digital de la Información

Representación digital de la información

Tema 2: Sistemas de numeración

LECCIÓN Nº 02 FUNCIONES DE LOGICA COMBINACIONAL (PARTE 1)

1.1 Sistemas de numeración. Ejemplos de sistemas de numeración posicionales. Base numérica. Circuitos Digitales

Centro Asociado Palma de Mallorca. Tutor: Antonio Rivero Cuesta

Práctica 1: Representación de números

Representación de Números

HOJA DE PROBLEMAS 2. SISTEMA BINARIO DE REPRESENTACIÓN NUMÉRICA. 1. Convertir los siguientes números binarios a sus equivalentes decimales: a.

Empecemos! Los números, los carácteres y la computadora. Universidad de la Experiencia UZ 03/02/2016. Francisco José Serón Arbeloa 1

Colegio Diocesano San José de Carolinas

TEMA II: SISTEMAS DE NUMERACIÓN

Operaciones Matemáticas con Números Binarios.

OPERACIONES CON NÚMEROS BINARIOS

CONALEP TEHUACÁN ING. JONATHAN QUIROGA TINOCO SPORTE Y MANTENIMIENTO A EQUIPOS DE CÓMPUTO OPERACIÓN DE CIRCUÍTOS ELECTRÓNICOS DIGITALES TEMA 1.1.

Representación de números en binario

Fundamentos de TIC s. Departamento: Ingeniería e Investigaciones Tecnológicas UNIDAD NRO. 2 TRABAJO PRÁCTICO. Dr. Daniel A. Giulianelli.

ING. PEDRO ALBERTO ARIAS QUINTERO

Sistemas de Numeración Operaciones - Códigos

Organización de Computadoras. Clase 2

Circuitos electrónicos digitales. Unidades Aritméticas Lógicas. Departamento de Tecnología Electrónica Universidad de Sevilla

Estructura de Computadores Tema 2. Representación de la información

Computación I Representación Interna Curso 2017

NÚMEROS UTILIZADOS EN ELECTRÓNICA DIGITAL

Sistemas de Representación. Organización del Computador 1 Verano 2016

Un sistema de numeración está compuesto por el conjunto de símbolos y reglas que se utilizan para representar cantidades.

Práctica 1. Sistemas de Numeración y Representación de la Información

Aritmética del Computador

UNIVERSIDAD DON BOSCO TECNICO EN INGENIERIA EN COMPUTACION

5. Codificación n de información en binario

TEMA 1: INTRODUCCIÓN A LOS SISTEMAS DIGITALES.

Guía práctica de estudio 06: Lenguaje binario

IEE 2712 Sistemas Digitales

2. Representación de números 1

01. A qué se denomina conjunto de punto flotante? Conjunto de números racionales utilizado para representar a los números reales.

Transcripción:

ARITMÉTICA BINARIA 1.1 Introducción Las últimas máquinas estudiadas, poseen la propiedad del tratamiento en paralelo de varios bits. Según cada máquina, serán: 4, 8, 16,32 etc. A estos conjuntos de bits lo llamamos palabra. Si la palabra es de 8 bits, se la denomina byte. Esta palabra puede representar entre otras cosas, datos, y estos datos pueden ser, alfabéticos, numéricos, etc. En esta ocasión nos referiremos a los datos numéricos, las diversas formas de representación, y sus características, etc. 1.2 Sistema Numérico Posicional (binario) Como sabemos todas las computadoras digitales, poseen la característica de reconocer internamente, solo dos valores como válidos, para todas sus funciones, ellos son 0 y 1 ; debido a que el sistema binario es el sistema mas fácilmente implementable en los sistemas digitales. Este sistema binario pertenece al conjunto de los sistemas numéricos posicionales, como lo es el decimal pues el valor que representa un dígito depende del lugar en que se encuentren dentro del número. En esta forma de representación, el número es representado como un vector de n bits (o dígitos). Asociado con cada sistema numérico está la raíz o base B. En el sistema binario donde la base B=2 el valor de los dígitos será 0 ó 1. Consideremos un vector de n bits de la forma: N = a n-1 a n-2 a n-3... a 1 a 0 (1.1) Donde: n = números de bits que representan a N a i = 0 ó 1 para 0 i n-1 Este vector puede representar valores enteros positivos V según V = a n-1 * 2 n-1 +... + a 2 * 2 2 + a 1 * 2 1 + a 0 * 2 0 (1.2) Así el valor de N, el cual es indicado normalmente como N, puede tener la siguiente representación: n-1 N = a i B i (1.3) i=0 Para los valores extremos: 1

Nmin = a 0 B 0 = 0*2 0 = 0 = Nmin n-1 Nmax = 2 i = 2 0 + 2 1 + 2 2 +.... 2 n-1 = 2 n - 1 (1.4) i=0 La anterior representación (1.3) es para números enteros positivos, pero puede también extenderse para permitir representar números fraccionarios, por ejemplo: N = a n-1 * 2 n-1 +.... +a 1 * 2 1 + a 0 * 2 0 + a -1 * 2-1 + a -2 * 2-2 +... + a -m * 2 -m (1.5) Donde m es la cantidad de bits utilizados para representar la parte fraccionaria, ejemplo. 110011,1011 1.2 5 + 1.2 4 + 0.2 3 + 0.2 2 + 1.2 1 + 1.2 0 + 1.2-1 + 0.2-2 + 1.2-3 + 1.2-4 = 51,6875 1.3 Representación Binaria, Octal y Hexadecimal Otras bases posibles de ser utilizadas en computadoras digitales para la representación numérica son: Octal: cuyos símbolos son 0, 1, 2, 3, 4, 5, 6, 7 Hexadecimal: cuyos símbolos son 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F En este último caso los símbolos A-F son convenidos para la representación de los valores 10-15, en un solo dígito. La generalidad de las computadoras utilizan la base 2 (binaria) a pesar de la incomodidad que representa el transferir los resultados a valores en decimal, sin embargo, la facilidad en las operaciones suma, resta, etc., justifica ampliamente su utilización. Observando las siguientes relaciones: 2 3 =8 ; 2 4 =16 vemos que cada dígito octal, corresponde a 3 binarios, y cada dígito hexadecimal a 4 binarios. Por lo tanto la conversión de binario a octal y a hexadecimal se hace fácilmente dividiendo en grupos de 3 ó 4 bits respectivamente. 0 2 5 1 3 4_ Octal 2

0 0 1 0 1 0 1 0 0 1 0 1 1 1 0 0 Binario 2 A 5 C Hexadecimal Fig. 1.1 En la tabla 1.1 se observan las equivalencias entre los códigos mas comunes en sistemas digitales. 1.4 Representación Números Enteros Uno de los principales requerimientos en el trabajo con datos numéricos es que exista la posibilidad de que los números puedan ser distinguidos en positivos y negativos. Para ello existen 3 sistemas de representación, a saber: a) Signo y Módulo b) Complemento a 1 (o complemento a la base disminuida) c) Complemento a 2 (o complemento a la base o complemento verdadero) Decimal Binario Octal Hexa 00 0000 00 0 01 0001 01 1 02 0010 02 2 03 0011 03 3 04 0100 04 4 05 0101 05 5 06 0110 06 6 07 0111 07 7 08 1000 10 8 09 1001 11 9 10 1010 12 A 11 1011 13 B 12 1100 14 C 13 1101 15 D 14 1110 16 E 15 1111 17 F 16 1000 20 10 Tabla 1.1 Equivalencia de códigos 1.4.a Sistema de Representación, signo y módulo 3

En esta representación del total de bits disponibles para la codificación del número, se considera un bit, por convención, el mas significativo, como bit de signo. El valor 0 de este bit, significará que el resto de los bits representan a un número positivo. En el caso de ser 1 implica número negativo. De mas está decir que en este caso se ve disminuido el rango de representación con respecto a los números sin signo, ya que se dispone de un bit menos para la representación. Así Rango N sin signo 0 N 2 n -1 Rango N positivos (sig. y mod) 0 N 2 n-1-1 Ejemplos: Rango N negativos (sig. y mod) 0 N -(2 n-1-1) (1.6) para 4 bits para 8 bits -7 N 7-127 N 127 5 = 0101 7 = 0111 25 = 00011001-5 = 1101 1 = 0001-25 = 10011001-7 = 1111-1 = 1001-1 = 10000001 1.4.a.1 Ventajas Se dispone de un método para representar números positivos y negativos muy simple. El análisis del valor del signo es fácilmente implementable ya sea por hardware o por software. 1.4.a.2 Desventajas Se presenta el caso de la dualidad en la codificación del cero: +0 = 0000 0000-0 = 1000 0000 Además en caso de operaciones aritméticas con números de distinto signo, las magnitudes deben ser comparadas por separado para determinar el signo del resultado. Este sistema es rara vez utilizado. 1.4.b Sistema de Representación Complemento a 1 4

Para los números positivos la codificación es exactamente igual que para el método anterior. N = 0 a n-2 a n-3... a 1 a 0 (1.7) Para los negativos se aplica la siguiente definición: C 1 (N) = 2 n - 1 - N (1.8) Donde n es el número de bits utilizado para la codificación del número N. Apliquemos la definición a un número cualquiera representado en 8 bits: N = 12 00001100 N = -12 = C 1 (12) = 2 n - 1 - N = 2 8-1 - N = = 100000000-1 - 00001100 = 11111111-00001100 = 11110011 = C 1 (12) Observando el resultado obtenido y repitiendo varios ejemplos concluimos que, la forma rápida de obtener el complemento a 1 de un número cualquiera es complementar bit a bit sus dígitos. El campo de representación para este complemento será: -(2 (n-1) - 1) N 2 (n-1) - 1 (1.9) para 8 bits tendremos: -2 (8-1) + 1 N 2 (8-1) - 1-128 + 1 N 128-1 -127 N 127 Aplicando la definición o el método práctico de obtener este complemento al número cero, obtenemos: 0 = 00000000-0 = C 1 (0) = 11111111 1.4.b.1 Ventajas Desde el punto de vista digital, fácilmente implementable, para la obtención del complemento. El bit de signo, a diferencia del método anterior, forma parte del número, tiene asignado un cierto peso, que en este caso es -(2 n-1-1). Esto permite una simplificación en las operaciones aritméticas. 1.4.b.2 Desventajas 5

Persiste la dualidad en la representación del cero. En caso de operaciones aritméticas el transporte juega un rol muy importante, y su consideración varía en cada caso. 1.4.c. Sistema de Representación Complemento a 2 Al igual que en los métodos anteriores, la representación para los positivos es la misma, o sea N = 0 a n-2 a n-3... a 1 a 0 Para los negativos se aplica la siguiente definición C 2 (N) = 2 n - N (1.11) Donde n es el número de bits utilizado para representar a N. Observando las definiciones (1.11) y (1.8) concluimos que: C 1 (N) = C 2 (N) -1 o sea C 1 (N) + 1 = C 2 (N) (1.12) Aplicando la definición (1.11) para el ejemplo en 8 bits, obtenemos: N = 12 = 00001100-12 = C 2 (12) = 2 8-12 = 100000000-00001100 = 11110100 Aplicando (1.12) C 2 (12) = C 1 (12) + 1 = 11110011 + 1 = 11110100 c.q.d. De tal manera se obtiene una forma rápida y eficiente para obtener el complemento a 2 de un número cualquiera. El rango de representación es: para 8 bits - (2 (n-1) ) N 2 (n-1) - 1 (1.13) - 128 N 127 Esto queda claramente demostrado cuando se analiza la representación del 0, ya que es única para los casos positivos y negativos, dejando, por lo tanto, una combinación libre que es utilizada para ampliar el rango de representación de los números negativos. 6

Ejemplo: 0 = 0000 0000 C 2 (0) = 1 0000 0000-0000 0000 = 0000 0000 Ejemplos para 8 bits. 127 = 0111 1111 Tener en cuenta que es ilícito la operación en 8 bits, de 1 = 0000 0001 complemento a 2 de -128 ya que el +128 no tiene posibilidad 0 = 0000 0000 de representación en 8 bits. -1 = 1111 1111-127 = 1000 0001-128 = 1000 0000 1.4.c.1. Ventajas Al igual que en el complemento a 1, el bit de signo tiene peso dentro del número, por lo tanto en las operaciones aritméticas no hay que hacer diferencia entre las operaciones realizadas con operandos positivos y negativos. En complemento a 2 el peso es -2 n-1 (1.14) En ambos casos (C1 y C2) el peso del bit de signo es el valor del mínimo número representable. Se aumentó el rango de representación al unificarse la codificación del cero. Las operaciones aritméticas se ven simplificadas al perder importancia el bit de transporte, el cual se desprecia para todas las operaciones en simple precisión. 1.4.c.2. Desventajas Se complica con respecto al complemento a 1, la operación de complementación, ya que no es directa como en ese caso. Para solucionar esta dificultad prácticamente se aplica la fórmula (1.12) C 2 = C 1 + 1. 1.4.c.3. Método Práctico 7

Existe una forma de encontrar prácticamente el complemento a 2 de un número cualquiera. Los pasos a seguir son: a) Se observan los dígitos binarios de derecha a izquierda. b) Los ceros quedan como ceros, hasta la aparición del primer uno. c) Este queda como está, y de ahí en mas se complementa bit a bit, todos los dígitos restantes. Ejemplo: 0 1 0 0 1 1 0 0 a) b) 0 0 c) 1 0 1 1 0 1 0 0 Si aplicamos el método de (1.12) N = 0100 1100 C 1 (N) = 1011 0011 C 1 + 1 = 1011 0100 c.q.d. Una extensión a este método es aplicable al Sistema Hexadecimal para lo cual se procede de la siguiente manera: Para obtener el complemento a 1 (C 1 ) : Se complementa a F 16 (15 10 ) cada uno de los dígitos hexadecimales que forman el número. Ejemplo: C 1 (7A53) = 85AC Para obtener el complemento a 2 (C 2 ): Se debe complementar a la base (16 10 ) el dígito menos significativo distinto de cero, sin modificar los ceros a la derecha de este; y a F 16 (15 10 ) los dígitos restantes. Ejemplo: C 2 (7A53) = 85AD C 2 (3BE0) = C420 1.5 OPERACIONES ARITMÉTICAS: 8

La suma es la operación matemática básica; en base ha ella se puede realizar cualquier otra operación. En el caso concreto de una resta, restar el número positivo B del número positivo A, es equivalente a sumar al número A el número -B. Por tanto, si se realiza una representación adecuada de los datos negativos, la resta puede ser convertida en una suma. A - B = A + ( - B ) en caso de que B < 0 : A - ( - B ) = A + B En el tema 1.2.1 se estudiaron las distintas maneras de representar números negativos. Para las operaciones de aritmética binaria se hará uso de los Sistemas de Representación de Complemento a la base (C 2 ) y Complemento a la base menos uno (C 1 ). Estos Sistemas se usan en base a las ventajas que tienen en la representación de números negativos. Se demuestra a continuación que representando a -B como el complemento de B se pueden realizar operaciones matemáticas correctamente; para ello se analizan los distintos casos que se presentan tanto para Complemento a la Base, como en Complemento a la base menos uno. La importancia de este tema radica en el uso de la Aritmética Binaria en la programación de los Microprocesadores. 1.5.1 DISTINTOS CASOS EN SISTEMA DE REPRESENTACIÓN EN COMPLEMENTO A UNO. 1.5.1.a. Los dos operandos positivos, resultado de la operación positivo. Es decir: A > 0 ; B > 0 ; (A + B) > 0 Ejemplo: 20 0001 0100 A + + + 15 0000 1111 B. 35 0010 0011 A+B De esta forma se concluye que el resultado es el correcto. 1.5.1.b. Uno de los operandos es negativo, resultado de la operación positiva: A > 0 ; B < 0 ; (A + B) > 0 9

A + B = A + B + (2 n - 1) - (2 n - 1) = A + B + 2 n - 1-2 n + 1 = A - (-B) + 2 n - 1-2 n + 1 pero como B es negativo, entonces: - B = B (módulo de B) por lo que reemplazando: A + B + 2 n = A - (-B) + 2 n - 1 + 1 = A + 2 n - 1 - (-B) + 1 siendo: 2 n - 1 - (-B) = C 1 (B) Reemplazando: A + B + 2 n = A + C 1 (B) + 1 Donde 2 n representa el transporte generado Se concluye que: en el caso de suma de dos números, expresados en Sistema de Representación en Complemento a uno, siendo uno de ellos < 0,y la suma obtenida > 0, para que el resultado sea el correcto hay que sumarle al valor suma obtenido el transporte generado, éste se denomina "end around carry". 1.5.1.c CASO EN QUE UNO DE LOS SUMANDOS ES NEGATIVO Y LA SUMA OBTENIDA ES MENOR QUE CERO: A > 0 ; B < 0 ; ( A + B ) < 0 A + B = A + B + (2 n - 1) - (2 n - 1) A + B + (2 n - 1) = A - (-B) + (2 n - 1) 10

2 n - 1 - (-(A + B) = A + 2 n - 1 - (-B) Reemplazando: C 1 (A + B) = A + C1 (B) Se concluye que el resultado obtenido se encuentra expresado en Complemento a Uno, y no es necesario realizar corrección, ya que no produce acarreo. 1.5.1.d CASO EN QUE AMBOS OPERANDOS SON MENORES QUE CERO: A < 0 ; B < 0 ; ( A + B ) < 0 A + B = A + B ( A + B )+ 2 n - 1-2 n - 1 = ( A + B ) + 2 n - 1-2 n - 1 2 n - 1 - (-( A + B )) = 2 n - 1 -( -A )+ 2 n - 1 -(-B ) - 2 n +1 C 1 (A + B) = C 1 (A) + C 1 (B) - 2 n +1 C 1 (A + B) + 2 n = C 1 (A) + C 1 (B) + 1 El término +2 n que aparece en la última expresión es el transporte generado (carry). De acuerdo al resultado obtenido se concluye que: en el caso de suma de dos números, expresados en Sistema de Representación en Complemento a Uno, siendo ambos < 0, para que el resultado sea el correcto hay que sumarle al valor suma obtenido el transporte generado. El resultado es un número negativo y está expresado en el Sistema de Representación en Complemento a Uno. 1.5.1.e CONCLUSIONES De acuerdo a las operaciones que se han planteado se observa que si bien es muy fácil la obtención del Complemento a Uno de un número binario, se debe tener mucho cuidado cuando se usa éste 11

Sistema de Representación para la realización de operaciones aritméticas, pues es necesario realizar correcciones, en algunos casos, en los resultados obtenidos; es decir se debe tener en cuenta el acarreo (transporte) producido. Esto complica el algoritmo ya que el programador deberá tener en cuenta en que caso se esta y de acuerdo a ello actuar. 1.5.2. DISTINTOS CASOS EN SISTEMA DE REPRESENTACIÓN EN COMPLEMENTO A DOS. 1.5.2.a. CASO EN QUE LOS DOS OPERANDOS SON POSITIVOS A > 0 ; B > 0 ; ( A + B ) > 0 Debido a que los números positivos tienen la misma representación que en el caso de Sistema de Representación en Complemento a Uno, la suma de dos números positivos no tiene diferencia a la ya vista en 1.2.2.a. 1.5.2.b. CASO EN QUE UN SUMANDO ES NEGATIVO Y EL RESULTADO DE LA SUMA ES POSITIVO A > 0 ; B < 0 ; ( A + B ) > 0 ( A + B ) + 2 n = A + C 2 (B) Al realizar la operación en Sistema de Representación en Complemento a Dos, se genera un transporte, pero éste se desprecia, ya que no interviene en el resultado obtenido. 1.5.2.c. CASO EN QUE UN SUMANDO ES NEGATIVO Y SUMA NEGATIVA A > 0 ; B < 0 ; ( A + B ) < 0 C 2 ( A+ B ) = A + C 2 ( B ) El resultado obtenido está en Complemento a 2 por ser una expresión negativa. 1.5.2.d. CASO EN QUE AMBOS SUMANDOS SON NEGATIVOS A < 0 ; B < 0 ; ( A + B ) < 0 2 n + C 2 (A + B) = C 2 ( A )+ C 2 ( B ) 12

Al igual que el caso anterior, se obtiene directamente el resultado independientemente de la generación de transporte (carry). 1.5.2.e. CONCLUSIONES De acuerdo a las operaciones planteadas, se concluye que: cualquiera sea la operación suma que se realice en Complemento a dos, el resultado obtenido es directamente el correcto, independientemente del valor del transporte producido. Esta conclusión es muy importante debido sobre todo a la uniformidad en los distintos casos de operaciones, sobre todo muy conveniente como base de operaciones en el uso de microcomputadores, a pesar que la obtención del Complemento a dos no es directo ( de éste modo se evita la corrección o no del resultado obtenido ). 1.6 La Aritmética Binaria en Microprocesadores La mayoría de los microprocesadores poseen dentro de su repertorio básico de instrucciones, diversas instrucciones que le permiten realizar operaciones aritmética y lógicas. Entre las aritméticas como mínimo se encuentra: la suma y la complementación a 1 (por coincidir con la complementación binaria), y en algunos casos la resta y/o la complementación a 2. En las máquinas de 16 y 32 bits de longitud de palabra el repertorio incluye instrucciones de multiplicación y división. Quiere decir que para la realización del resto de las operaciones aritméticas el programador se debe basar en la suma. Ejemplo: Resta: Suma con distinto signo Multi: Sumas sucesivas Divis: restas sucesivas Poten: Multiplicaciones sucesivas Radic: Método aproximado Por lo tanto todas las máquinas disponen de la instrucción suma expresadas de la siguiente forma genérica: SUM = A + B + Cy (1.22) Donde A y B son generalmente lugares e memoria y/o registros con 8 bits de capacidad; y Cy significa transporte (carry) y es sumado al bit menos significativo. Dependerá del programador, y del programa en sí, el valor que inicialmente deba adoptar el carry. 13

Si se está trabajando exclusivamente con datos en Complemento a 1, habrá que analizar cada caso de los anteriores vistos. En caso de trabajar con Complemento a 2, siempre el Cy inicial es cero. La otra opción es que uno esté en S.R.C.1, y el otro en S.R.C.2. Si en este caso ambos son negativos, habrá que convertir al dato expresado en complemento a 1 en la misma operación de suma de la siguiente manera: C 1 + 1 = C 2 Cy = 1 Conclusión Se recomienda la utilización del Complemento a 2 para todas las operaciones y en el caso de que se deba utilizar la complementación a 1 para convertir a (-), inmediatamente pasar a Complemento a 2, (si el dato va a ser almacenado) y si se va a operar, convertir mediante Cy = 1 en la suma. C 2 (A + B) = C 2 (A) + C 1 (B) + 1 (1.23) C 1 (A + B) = C 1 (A) + C 1 (B) + 1 (1.24) C 2 (A + B) = C 1 (A + B) + 1 (1.25) Tener en cuenta que para pasar a complemento a 2 una operación de 2 números expresado en C 1 y ambos son negativos no se puede hacer en un solo paso, pues en (1.24) se obtiene el resultado de la suma en complemento a 1, y recién en (1.25) se transforma en C 2. 1.7 Valoración de Resultados Negativos De las operaciones hasta ahora planteadas, tanto el complemento a 1 como el complemento a 2, vimos que, si el resultado obtenido era < 0, en todos los casos, este resultado, estaba expresado en la forma complementada del sistema que se trate. Si este valor será utilizado para operaciones sucesivas, pasa a la siguiente operación tal cual está. Ahora bien, si de alguna manera el operador desea valorar, o tener una idea del resultado, existen dos métodos para obtener el valor absoluto de la cantidad obtenida, y así poder aplicar el método de transformación a números decimales que el operador domina. A saber: 1.7.1.a. Aplicar el complemento del resultado para llevarlo a su expresión positiva 1.7.1.a.1 Aplicar la fórmula del siguiente desarrollo: Un número negativo N 1 = a n-1, a n-2,..., a 1, a 0 podemos también indicarlo como n-2 14

N 1 = a n-1 * 2 n-1 + a i * 2 i (1.27) Si este número es negativo y está representado en S.R.C.1 i=0 N 1 = 2 n - 1 - N o bien como N es negativo, como N 1 = 2 n - 1 + N (1.28) Igualando (1.27) y (1.28), se obtiene n-2 2 n - 1 + N = a n-1 * 2 n-1 + a i * 2 i i=0 Despejando N y considerando que a n-1 = 1 por ser un número negativo (bit de signo = 1), se tiene como -2 n + 2 n-1 = - 2 n-1 n-2 N = -2 n + 2 n-1 + 1 + a i * 2 i i=0 n-2 N = (- 2 n-1 + 1) + a i * 2 i i=0 Donde la expresión encerrada entre paréntesis corresponde al peso del bit de signo para el S.R.C.1 que para el caso de 8 bits será -2 8-1 + 1 = -128 + 1 = -127 Para el caso de S.R.C.2 el análisis es similar obteniendo N = - 2 n-1 n-2 + a i * 2 i i=0 en este caso el peso del bit de signo para S.R.C.2 en 8 bits será -2 8-1 = -128 Dado un número negativo en complemento a 2 N = 1001 1111 luego, N = -2 7 + (1 + 2 + 4 + 8 + 16) = -128 + (31) = -97 = N 15

Haciendo la comprobación: Complementando a 2 el 1001 1111 da 0110 0001 1 + 32 + 64 = 97 c.q.d. 1.8 DESBORDE (OVERFLOW) Cuando en una operación de suma se supera el rango de números posibles de representar, con la cantidad de dígitos con que se trabaja, se dice que se ha producido desborde. En la suma de dos números de distinto signo nunca se puede producir desborde, pero en la suma de números de igual signo puede producirse, como muestra a continuación: - 3 1101 + 5 0101 + + - 6 1010 + 6 0110-9 10111 = +7 + 11 1011 = -5-8 1000 + 7 0111 + + - 8 1000 + 7 0111-16 10000 = +0 +14 1101 = -2 Hay dos formas sencillas y rápidas de detectar el desborde: a- Analizando el bit de signo: Es el método mas común para la detección del desborde, se usa incluso para la detección en los programas de microcomputadoras. Se basa en que si los dos sumandos son del mismo signo, el resultado deberá tener el mismo signo que los operandos. De acuerdo a esto se tiene que: Si A > 0; B > 0; A + B = C; donde C debe tener el mismo signo que A y B. Del mismo modo para el caso en que A < 0; B < 0; A + B = C. En cualquier caso en que el resultado, C, no tenga el mismo signo que los sumandos, es que se ha producido desborde. b- Analizando el transporte: Este método se aplica preferentemente para el Sistema de Representación en Complemento a Dos, pues en Complemento a Uno existe un caso en que no se cumple, debido a la dualidad del cero. Para saber si hay desborde se analiza el transporte del bit se signo: si transporte que recibe es distinto del que emite existe desborde. 16

Ejemplos: Transporte emitido 0 1 Transporte recibido 127 0 0111 1111 + 1 + 0 000 0001 128 1 000 0000 => Overflow Transporte emitido 1 0 Transporte recibido - 128 1 1 000 0000 + - 1 + 1 111 1111-129 0 111 1111 => Overflow El caso en C 1 en que este método no se comprueba es el siguiente: Transporte emitido 1 0 Transporte recibido - 127 1 1 000 0000 + - 0 + 1 111 1111-127 0 111 1111 + 1 corrección 1 000 0000 en este caso de acuerdo a lo antes expresado debería existir desborde pero en realidad no ha ocurrido. 1.9 SIMPLE PRECISIÓN-DOBLE PRECISIÓN Debido a que el número máximo representable por un computador es función de la cantidad de dígitos utilizados para la representación, la longitud de la palabra es a veces insuficiente para la precisión que se necesita. Por lo que en caso de desear trabajar con una mayor precisión se recurre al uso de dos o más palabras. Por ejemplo: suponiendo un computador con una palabra de 8 bits, en caso de trabajar con datos de 8 bits trabajará en simple precisión, en caso de trabajar con datos de 16 bits trabajará con dos palabras sucesivas. Es decir: 17

01001100 = Simple Precisión 01110101 10000001 = Doble Precisión Se puede trabajar también en triple o más precisión. En esta forma de trabajar el bit de transporte tiene mucha importancia. Este bit es el que concatena las dos o más palabras conque se trabaja. Normalmente, cuando se tienen dos o más palabras, se denomina parte baja a la primer palabra (conjunto de bits menos significativos), y parte alta a la siguiente (conjunto de bits más significativos). Se debe tener en cuenta que en la primer palabra no existe bit de signo, y en caso de originarse transporte se deberá sumar al bit menos significativo del byte más significativo. El análisis de overflow se realiza en el bit más significativo del byte mas significativo. 2.1 Aritmética Decimal Codificada en Binario 2.1.1 Codificación en Binario Natural Se emplea cuatro bits para codificar cada dígito decimal, quedando por lo tanto seis cuaternas (combinaciones) de las 16 posibles sin utilizar, pues el sistema decimal posee 10 elementos Ejemplo: 8 10 = 1000 9 10 = 1001 10 10 = 0001 0000 18 10 = 0001 1000 Recordar que el BCD no es un sistema de numeración como el binario, hexadecimal y octal. El BCD es el sistema decimal, con cada dígito codificado por su equivalente binario natural. 2.1.2 Operación de suma Sean d i y q i los iésimos dígitos decimales de los números D y Q, y siendo c i el transporte que recibe, tenemos que: si se cumple: c i + d i + q i 9 (1.32) la suma de los respectivos códigos binarios entregará el código natural correcto. En cambio: si se cumple: c i + d i + q i > 9 (1.33) 18

es fácil concluir que el resultado obtenido hay que sumarle 6 para no considerar las combinaciones redundantes. Ejemplos: 12 0001 0010 + + 15 0001 0101 27 0010 0111 2 7 menores que 9 resultado correcto 27 0010 0111 0011 1011 ajustando la + + + operación 14 0001 0100 1 0110 41 0011 1011 0100 0001 2 10 11 10 4 10 1 10 En la columna del byte menos significativo se obtiene un resultado mayor que 9 (1011) por lo tanto ese byte se ajusta mediante la suma de 6 en binario (0110). El sumarle 6 equivale al 7 + 4 = 1 y me llevo 1 Ejemplo: 82 1000 0010 + + 98 1001 1000 180 1 0001 1010 0110 0110 1 1000 0000 1 10 8 10 0 10 El acarreo surge naturalmente cuando d i + q i + c i > 9. Hay casos en que la corrección se debe hacer en dos etapas. Por ejemplo: 83 1000 0011 + + 17 0001 0111 100 1001 1010. 1 0110 1010 0000. 0110.. 1 0000 0000 19

1 10 0 10 0 10 2.1.3 Resta en Binario Decimal Al igual que en aritmética binaria, tendremos que tener sistemas de representación de números negativos. Estos son: a) Complemento a 9 b) Complemento a 10 Los definiremos de la siguiente manera: C 9 (N) = N 9 0 = 10 n -1 - N Donde n es el número de dígitos decimales que 0 C 10 (N) = N 10 = 10 n - N representa el número Similar al caso de C 2 C 10 = C 9 + 1 (1.34) El C9 se obtiene restando cada dígito componente del número de 9 9 9 9... 9 - a n-1 a n-2 a n-3... a 0 Ejemplo: S i N = -82 que C 9 (N) = 99-82 = 17 = C 9 (N) La resta vuelve a convertirse en suma conviniendo en representar los números negativos en forma completa. 2.1.3.a Distintos Casos en C 9 2.1.3.a.1. Caso de un sumando negativo con resultado positivo Esquemáticamente: A < 0 ; B > 0 ; (A + B) > 0 Aplicando la definición de complemento a 9 y el mismo artificio que en los casos anteriores: A + B = -(-A) + B = 10 n - 1 - (-A) + B - 10 n + 1 A + B + 10 n = C 9 (A) + B + 1 (1.34) De lo que se deduce que si la suma es positiva siendo uno de los sumandos representado en su complemento, el resultado es correcto si sumamos el end around carry. 20

Ejemplo: 29 0010 1001 0010 1001 - - + 18 0001 1000 1000 0001 11 1010 1010 ajuste 0110 0110 end around carry 1 0001 0000 1 0001 0001 = 11 10 Se produce el transporte que hay que realimentar al dígito menos significativo que indica que el resultado es positivo y queda expresado en forma correcta. 2.1.3.a.2. Caso de un sumando positivo, uno negativo y el resultado de la suma negativo Esquemáticamente: A> 0 ; B < 0 ; (A + B) < 0 Aplicando los mismos principios anteriores vistos: -(-(A + B)) + 10 n - 1 = A + C 9 (B) C 9 (A + B) = A + C 9 (B) (1.35) Ejemplo: 1 29 0010 1001-32 0110 0111-3 1001 0000 0110 1001 0110 = 96 10 Al no producirse transporte concluimos que el resultado es negativo y queda expresado en el sistema de representación utilizado, que para este caso es complemento a 9, transformando: 99-96 = 3 c.q.d. 21

En los dos casos anteriores el análisis del bit de carry nos da la posibilidad de conocer el signo del resultado 2.1.3.a.3 Caso en que los dos sumandos son negativos Esquemáticamente: A < 0 ; B < 0 ; (A + B) < 0 A+B = - (-A) - (-B) = 10 n - 1 -(-A) + 10 n - 1 - (-B) + 1 + 1-10 n 10 n - 1 - (-(A+B)) + 10 n = C 9 (A) + C 9 (B) + 1, o sea C 9 (A + B) 10 n = C 9 (A) + C 9 (B) + 1 (1.36) Similar al caso anterior, el transporte deberá sumarse al resultado final para obtener la suma en forma de complemento 9. Ejemplo: - 94 1001 0100 0000 0101 + - 04-0000 0100 1001 0101-98 1001 1010 1 0110 1010 0000 0110 1 0000 0000 1 0000 0001 = C 9 (A + B) (A + B) = C 9 (C 9 (A + B) ) = 99-01 = 99 c.q.d. Por supuesto, en este caso siempre la operación dará negativa, por lo tanto no tiene sentido verificar el transporte como en los casos anteriores. 2.1.3.b Distintos Casos para Complemento a 10 2.1.3.b.1. Un Sumando Positivo, uno Negativo, Resultado Positivo Esquemáticamente: (A+B) > 0 ; B < 0; A > 0 (A + B) = A - B + 10 n - 10 n 22

A + B + 10 n = A + C 10 ( B) Indica que si (A+B) > 0 aparece un transporte y el resultado se obtiene en forma correcta sin necesidad de realimentar el carry. Ejemplo: 66 0110 0110 0110 0110-35 - 0011 0101 + 0110 0101-31 1 1100 1011 corrección 0110 0110 1 0011 0110 Para obtener el C 10 de 35 se obtiene como 100-35. 2.1.3.b.2 Caso un Sumando Positivo, uno Negativo, Suma Negativa Esquemáticamente: (A + B) < 0; B < 0 ; A > 0 10 n - (A + B) = A + C 10 ( B) Ejemplo: C 10 (A + B) = A + C 10 ( B) (1.38) 42 0100 0010-95 +0000 0101-53 0100 0111 = 47 no hay transporte por lo tanto resultado 100-47 = 53 c.q.d. complementado 2.1.3.b.3 Caso en que ambos sumandos son menores que cero Esquemáticamente: (A+B) < 0 ; B < 0 ; A < 0 C10(A+B) + 10 n = C 10 (A) + C 10 (B) (1.39) Ejemplo: 23

-46 0101 0010-35 0110 0101-83 1011 0111 corrección 0110 1 0001 0111 1 7 100-17 = 83 c.q.d. Normalmente cuando se deben realizar operaciones en aritmética decimal, se utiliza el sistema de representación complemento a 10. De lo visto en aritmética decimal codificado en binario, podemos destacar lo siguiente: Que aunque se trabaja con números negativos y positivos no se ha mencionado en ningún momento el bit de signo, esto es porque un byte está formado por 2 nibbles y cada uno se utiliza para codificar en binario natural al correspondiente dígito decimal, lo cual implica que en el byte no hay lugar para bit de signo, lo que hace necesario la utilización de un noveno bit para el signo, el cual es necesario, ya que si por ejemplo se trabajan con datos en S.R.C.10 positivos y negativos y se tiene un dato en 8 bits como el 35 10 = 00110101 BCD será imprescindible disponer de un noveno bit que permite discernir si la combinación de 1 y 0 representa a +35 10 o a -65 10. Si analizamos los casos suma decimal en que ambos operandos son de distinto signo, el signo del resultado se determina analizando el carry. Si se produce acarreo, el resultado será positivo, caso contrario el resultado será negativo. También el bit de carry sirve para determinar si se ha producido desborde o no en los casos de ambos operandos sean positivos o negativos. En el primer caso (ambos operandos positivos), el bit de carry igual a 1, indica la existencia de overflow. En el caso de ambos operndos negativos es a la inversa, si el carry es 0 implica overflow y cuando el carry es 1 no existe desborde salvo un caso particular que se debe contemplar y es cuando la suma de dos datos negativos da -100, se produce acarreo pero el resultado es erróneo para 8 bits de representación ya que la suma de dos datos negativos no puede dar cero, por lo tanto la detección de esta condición particular no es complicada. 2.2 CODIFICACIÓN EN BCD EXCESO DE TRES El código exceso de tres de un dígito decimal se obtiene sumando 3 al código BCD natural del número en cuestión: El exceso de 3 del número 7 10 = 0111 + 0011 = 1010 Exc3 24

2.2.1 SISTEMA DE REPRESENTACIÓN DE COMPLEMENTO A NUEVE: La propiedad fundamental de éste código es que es autocomplementario para la base 10, como lo es el Complemento a uno del Binario natural para la base dos. Esto quiere decir que el complemento a 9 se obtiene simplemente complementando booleanamente cada bit. Matemáticamente: N Exc3 = N + 3 El C 1 de N Exc3 será para 4 bits 2 4-1 - N Exc3 = 15 - N Exc3 = 9 + 6 - N Exc3 = 9 - (N+3) + 6 = 9 - N + 3 = C 9 (N) + 3 C1 (N Exc3 ) = C 9 (N Exc3 ) Se puede observar que la suma de dos dígitos, en caso de no producirse acarreo (es decir <=9), se halla expresada en Exceso 6 (3+3). Por lo tanto si no se produce acarreo habrá que restarle tres para que el número siga expresado en exceso de tres, o lo que es lo mismo sumarle el Complemento a 2 de tres, 1101, y despreciar el acarreo que se produzca. Si la suma es mayor que 9, se produce acarreo, que es correcto, pero el dígito queda expresado en BCD natural y por lo tanto hay que sumarle tres, 0011, para convertirlo a BCD exceso de tres. Ejemplo: 1 32 N Exc3 = 0110 0101 + 18 N Exc3 = 0100 1011 50 s/acarreo 1011 0000 acarreo sumar 3 restar 3 1101 0011 1000 0011 8 3 = 50 10 2.2.1.a OPERACIONES ARITMÉTICAS - OPERACIÓN DE RESTA EN EXCESO DE TRES: 25

Como ya se vio anteriormente el Código BCD exceso de tres es un código autocomplementario 1, por lo que el complemento a nueve de los dígitos en BCD exceso tres se obtiene simplemente al complementar booleanamente el número bit a bit. La operación de resta de dos números en exceso de tres se realiza de una manera similar a la vista para el código BCD natural, pero con la ventaja de obtener el número negativo de una forma sencilla y rápida. Ejemplos: A= 28 A Exc3 = 0101 1011 B= -75 C 9 (75 Exc3 )= + 0101 0111 A+B=-47 1011 0010 + 1101 0011 1 1000 0101 El resultado obtenido por la operación es 1000 0101, pero es un número negativo, para obtener su valor absoluto se aplica Complemento a nueve: C 9 (1000 0101)= 0111 1010 = 47 10 2.2.1.b REGLAS A TENER EN CUENTA Las operaciones en BCD exceso de tres deben tener en cuanta los siguientes ajustes: a- si la suma no produce acarreo el número está en exceso de 6 por lo que hay que restarle tres para quedar en exceso de tres. b- si la suma produce acarreo el número está expresado en BCD natural por lo que hay que sumarle tres para quedar en exceso de tres. En siguientes ejemplos se detallan las reglas que se deben observar en la ejecución de operaciones en Exceso de tres. Ejemplo: 79 1010 1100 + 10 + 0100 0011 1. Recuerde que un código es autocomplementario cuando la combinación correspondiente al complemento a 9 de N, es decir 9-N, se obtiene invirtiendo los unos por ceros y viceversa del número N. 26

89 1110 1111 + 1100 1101 corrección 1 1011 1101 en Complemento a dos. 1 Este acarreo se desprecia por provenir de una operación Ejemplo: - 28 1010 0100 + - 35 + 1001 0111-63 1 0011 1011 transp. C 9 + 1 corrección 0011 1100 + 0011 1101 corrección 0110 1001 1 se desprecia IMPORTANTE: Lo importante a tener en cuenta es la diferencia entre el acarreo por corrección, cuando se resta tres en C 2, en cuyo caso no se tiene en cuenta, y el acarreo que se produce por las reglas de C 9, que de producirse es necesario ajustar el resultado.. Ejemplo: 50 1000 0011-49 + 1000 0011 01 1 0000 0110 + 1 0000 0111 + 0011 1101 0011 0100 = 01 10 2.3 REPRESENTACIÓN EN COMA FIJA Y COMA FLOTANTE En los temas anteriores se estudiaron las operaciones aritméticas con números enteros codificados en el sistema binario natural o en los códigos decimal codificado en binario o en exceso de tres considerándolos enteros. 27

Las operaciones con números fraccionarios introducen un nuevo concepto, que es de la coma que separa la parte fraccionaria de la parte entera. Se utilizan dos formas principales de representación de la coma de un número decimal: el modo de coma fija, llamado así porque la coma es colocada arbitrariamente por el programador en cualquier lugar, y el modo de coma flotante, donde su ubicación está definida por un exponente. COMA FIJA: En ésta forma de representación se asigna, tal como indica su nombre, una posición fija a la coma. De tal modo, que si se opera con números binarios de ocho bits, por ejemplo, la coma se puede situar en forma arbitraria en cualquiera de las posiciones, pero una vez elegida no se modifica. La principal ventaja de éste método de representación es que los algoritmo que realizan las diferentes operaciones son los mismos que los estudiados para los números enteros anteriormente. Por ejemplo sean los siguientes números de ocho bits con dos decimales 011011,11 y 10001,01 la suma de ambos números es: 011011,11 + 100001,01 111101,00 De acuerdo a ésta suma, se observa claramente que la operación se realiza como si fueran enteros. El principal inconvenientes de la representación en coma fija es la limitación del número máximo a representar. Así por ejemplo, si se supone, igual que en el ejemplo dado, números de 8 bits con dos fraccionarios, el máximo número que se puede representar es 111111,11 y el mínimo distinto de cero es 0,01. Por lo que el límite máximo y mínimo depende de la posición de la coma. Además es muy probable que se produzca un desborde (overflow) en operaciones como la multiplicación y también u underflow en operaciones e división. COMA FLOTANTE: Este método de representación evita el inconveniente antes mencionado, pero tiene el inconveniente de que la realización de algoritmos de las diferentes operaciones matemáticas son más complejos. La representación de los números en coma flotante en un sistema de numeración de base B se realiza mediante una mantisa m y un exponente e tal que: n = m * B e donde: m = mantisa 28

B = base e = exponente Inclusive puede adicionarse el signo, tanto en la mantisa como en el exponente. N = S.M * B SE Por ejemplo, en el sistema decimal B = 10, se pueden tener las siguientes representaciones de un mismo número: 2,22 x 10 4 = 0,0225 x 10 6 = 225,00 x 10-1 =... donde se tiene distinto valor de mantisa y de exponente de acuerdo a la representación elegida. De todas las posibles formas de representar un número en coma flotante la que se utiliza en la práctica y se define como normalizada es aquella en que la coma decimal se coloca antes de la cifra mas significativa distinta de cero. De acuerdo a esto el número anteriormente representado, en forma normalizada se escribe: 0,225 x 10 5 La normalización de un número se realiza desplazando la coma tantos lugares como sea necesario hacia la izquierda o hacia la derecha y aumentando o disminuyendo el valor del exponente en tantas unidades como desplazamientos se han efectuado. En el Sistema Binario se pueden representar de forma similar los números en el formato de coma flotante. Por ejemplo: 0,011 x 2 0011 = 1,1 x 2 0001 = 110 x 2-0001 =... La expresión normalizada es: 0,11 x 2 0010 Los números se almacenan en coma flotante en los sistemas digitales mediante su mantisa y su exponente en el siguiente formato (utilizándose la forma normalizada): EXPONENTE MANTISA Por ejemplo, para una palabra de 8 bits, si se utilizan 4 para la mantisa y 4 para el exponente, con una base binaria, obtenemos como número máximo: 29

15 * 2 15 = 491,520 10 mientras que con coma fija, y con el mismo formato para la parte entera que para la decimal, solo se podrá codificar hasta el 15,93. La mantisa controla la precisión, mientras que el exponente especifica el rango del número. El número de bits para la mantisa es justamente fijado de acuerdo a la precisión requerida. Este sistema permite aumentar la exactitud de los cálculos pues se logra un uso mas racional de los registros y es menos frecuente el rebasamiento. La programación es mas simple ya que no se requiere la preparación de los operandos para evitar la pérdida de precisión. En cuanto a las desventajas están la relativa complejidad de la adición pues hay que igualar los exponentes. Por su parte el método de coma fija, tiene la ventaja de que si fijamos los operandos entre (-1; +1), el producto también estará en ese rango y no hará falta modificar el posible factor de escala. Como desventaja, la programación es mas complicada, porque si los dos factores son pequeños el error de redondeo (round off) puede ser tan grande que requeriría de una programación especial para reducirlo. En aplicaciones de control, puesto que el programa se desarrolla una sola vez, y queda fijo en la computadora, es viable el punto fijo que simplifica el hardware. Con el advenimiento de los co-procesadores o procesadores aritméticos se minimiza el problema del punto flotante, ya que estos permiten trabajar en esta forma con una capacidad de por ej. 80 bit y realizar operaciones, no solo aritméticas sino trigonométricas. 2.4 Detección de Errores Los procesadores digitales vistos tienen la posibilidad de conformar una inter relación con otros sistemas procesadores, u otros sistemas inteligentes. Para ello es fundamental la comunicación entre los sitemas conectados. Dicha comunicación es normalmente digital y la información se envía codificada. Como es lógico suponer hay varios códigos para la transmisión de información que sobre todo tienen en cuenta la detección de errores entre el emisor y el receptor. Uno de los métodos mas simple de detección de errores es el agregado a la palabra a transmitir, de un bit extra denominado bit de paridad. (o de imparidad). En dicho bit se lleva la cuenta de que si la cantidad de unos de la palabra a transmitir es par (paridad par), o impar (imparidad). 30

Ejemplo: Sea la palabra de 7 bits: 0010110 El total de uno es 3 impar, para restablecer la paridad (dicho de otra manera, para que la cantidad de unos sea siempre par), se debe agregar un 1 que por convención es en el lugar mas significativo. Bit de paridad par 1 0010110 Distintos ejemplos: 0110101 0011111 0 0110101 1 0011111 De la misma forma se trabaja para el caso de tener bit de imparidad Ejemplos: 1000111 0001110 1 1000111 0 0001110 En combinación con esta técnica los fabricantes de circuitos integrados proveen detectores de bit de paridad y de imparidad, por lo tanto si se instala uno en el transmisor y otro detector en el receptor, al comparar las salidas de ambos se sabrá si produjo un error en el envío de información. Este método tiene la ventaja de la simplicidad, pero al ser tan elemental no detecta por ejemplo un doble error, ya que de producirse no se vería afectada la cantidad de unos del dato enviado. Para ellos hay códigos mucho mas elaborados como ser el de Hamming, para estos, es imprescindible el agregado de mas bits de control. 3 APLICACIONES PRACTICAS EN MICROPROCESADORES 3.1 Suma Binaria La suma binaria se realiza de la misma forma que la suma decimal, excepto que el transporte que produce corresponde a potencias de 2 en vez de potencias de 10. En el caso de realizarse la suma con un microprocesador, la interpretación de los contenidos de los bits de carry (transporte), de overflow (desborde) y de signo, como así también del resultado, depende del sistema de representación utilizados para los datos. Por lo que el Programador es el que debe tener un criterio adecuado para su interpretación correcta, esto se muestra en los siguientes ejemplos: 31

Antes de presentar los ejemplos, conviene recordar bajo que condiciones se activa ( se pone en 1 ), cada uno de los bits del registro de estado luego de una operación de suma. El bit de Carry (CY) se pone en 1 luego de una operación de suma cuando se produce un transporte desde el bit 7. El bit de Signo ( S) se pone en 1 luego de una operación de suma cuando el bit 7 del resultado es uno. nota: Recordar que en la mayoría de los sistemas de representación el bit 7 es el bit de signo para datos de 8 bits. El bit de OverFlow (OV) se pone en 1 luego de una operación de suma si el acarreo que recibe el bit 7 es distinto al acarreo que emite este bit, (con la consideración de que el bit 7 es el de signo). Teniendo en cuenta lo anterior podemos anticipar : a - Que el bit de signo solo tiene sentido en los números con signo. b - Que el bit de overflow solo tiene sentido en los números con signo y cuya representación se corresponda a la del Sistema de Representación de Complemento a 2. (S.R.C.2) De lo anterior podría surgir una afirmación bastante errónea que es la de suponer que la suma se realiza en sistema de representación de complemento a 2, lo que es incorrecto ya que la suma binaria es una sola, lamentablemente es abundante la bibliografía que comete este error. Lo que realmente sucede es que como se expreso anteriormente los bits de signo y más especialmente el bit de overflow se activan según las reglas del SRC2. Recordar además que algunos procesadores no poseen bit de overflow por lo que su determinación de deberá realizar analizando el signo de los operandos y el del resultado. Ejemplo 1: Números sin signo:. Todos los bits forman la parte significativa del número, por lo tanto el bit de signo no cumple ninguna función en esta representación. El bit de desborde (si lo tuviese) tampoco cumple ninguna función por si solo. El rango de representación para 8 bits es de 0 a 255. a) Sin desborde. b) Sin desborde c) Con desborde. 11001101 CD 205 01101010 6A 106 11001101 CD 205 00011101 1D 29 00111100 3C 60 01000001 41 65 11101010 EA 234 10100110 A6 166 (1)00001110 0E 270 CY = 0 CY = 0 CY = 1 S = 1 S = 1 S = 0 OV = 0 OV = 1 OV = 0 En los casos a y b, la suma no excede el máximo número que puede ser representado, en estos casos el bit de carry permanece en cero. Aunque no hay desborde en b, el bit de overflow se pone en uno, esto se 32

debe a que la activación de este bit depende de los transportes que recibe y emite el bit 7, que para este caso no se consideran por no cumplir la función de bit de signo del dato. En el ejemplo c), la suma (270) excede el campo de representación de 8 bits (255) y un carry es generado, indicando que la suma es mayor de la que puede ser representada por 8 bits. Por lo tanto existe overflow, en este caso el bit de carry cumple la función de indicador de desborde, también el bit de transporte representa el noveno bit 2 8 del número que se necesita para tener un resultado correcto. En los microcomputadores, el bit de carry es capturado en un registro de 1 bit que actúa como una extensión del acumulador. Luego de una operación de suma el bit de carry debe ser examinado para determinar su estado. El bit de carry y el acumulador aparecen en el microcomputador como se observa en la figura siguiente: Acumulador Carry 7 6 5 4 3 2 1 0 Designación de bit 3.1.1 Suma en sistema de representación de magnitud y signo Los siguientes ejemplos muestran casos de suma en este sistema, el cual utiliza el bit 7 como bit de signo. Debido a esto solo 7 bits (bits 0 al 6) son utilizados para representar la magnitud, lo que implica que el rango de representacioón es de -127 a +127 Ejemplo 2 a) Ambos operandos son positivos, la suma no excede el campo de representación, por lo tanto el resultado de la operación es el correcto. 01110000 70 +112 00000111 07 + 7 ------------ --- ------- 01110111 77 +119 CY = 0 S = 0 OV = 0 b) Ambos operandos son positivos, la suma excede el campo de representación, por lo tanto el resultado de la operación no es el correcto. 01110000 70 +112 00110000 07 + 48 33

------------- --- ------- 10100000 A0-32 (debería ser 160) CY = 0 S = 1 OV = 1 Note que en el ejemplo 2b el rango positivo de +127 es excedido por la suma. El carry desde el bit 6 fue propagado sobre el bit 7, el bit de signo y el bit 7 se pone en 1, indicando incorrectamente que la suma es un número negativo. El resultado aparece como -32 en la forma magnitud y signo. Además ningún carry fue generado desde el bit 7 al registro de carry. El registro de carry contiene un cero. El otro registro (overflow) se pone en 1, indicando que la suma excedió el campo de representación. Para la suma utilizando la representación de magnitud y signo, la condición de colocar el bit de overflow en 1 es que se produzca un transporte del bit 6 del acumulador al bit 7. Asumiendo que el microcomputador posee un registro de carry y otro de overflow, la suma del ejemplo 2b debería aparecer de la siguiente forma. Acumulador Carry 7 6 5 4 3 2 1 0 Designación de bit 0 1 0 1 0 0 0 0 0 Overflow 1 El bit de overflow igual a 1 indica que el rango fue excedido y alguna acción de corrección deberá hacerse por programa, para modificar el valor erróneo de la suma. En el ejemplo 2b se puede interpretar al bit de carry como bit de signo y el bit 7 del acumulador como el bit mas significativo del resultado. En otras palabras el bit de signo migra hacia el bit de carry, quedando el resultado correcto expresado en 9 bits. Una muestra correcta del resultado en 9 bits es la siguiente: Acumulador Carry 7 6 5 4 3 2 1 0 0 1 0 1 0 0 0 0 0 = 160 10 c) Ambos operandos son negativos, la suma no excede el campo de representación, por lo tanto el resultado de la operación no es el correcto. 34

11101011 EB -107 10001010 8A - 10 ------------- ---- ------- (1)01110101 75 +117 debería ser -117 CY = 1 S = 0 OV = 1 El resultado de la suma de dos números negativos, representados en magnitud y signo, es incorrecto en cuanto a su signo. La corrección es fácil de implementar por soft, ya que en la suma de dos números de igual signo, el resultado debe tener el mismo signo. En este caso no existe desborde aunque el bit de overflow es activado. También el bit de carry puede ser interpretado como bit de signo y el bit 7 del acumulador como el bit mas significativo del resultado. Alternativamente, el bit 7 puede colocarse en 1 como bit de signo y resetear el bit de carry. Los registros en el microprocesador en este caso deberán aparecer como se ilustra a continuación. Acumulador Carry 7 6 5 4 3 2 1 0 0 1 1 1 1 0 1 0 1 = -117 d) Ambos operandos son negativos, la suma excede el campo de representación, por lo tanto el resultado de la operación no es el correcto. 11101111 EF -111 10100111 A7-39 ------------- ---- ------ (1)10010110 96-150 CY = 1 S = 1 OV = 0 Aunque el bit de overflow no se active, se ha producido un desborde. Como en los ejemplos previos, el bit de carry es interpretado como bit de signo y el bit 7 del acumulador como el bit mas significativo del resultado. En este caso en particular donde ambos números son negativos, el bit de carry siempre se pondrá en 1 como consecuencia del transporte producido al sumar los bits 7 de los sumandos, ya que ambos son 1. En este sistema de representación cuando se deben sumar números de distintos signo, es recomendable utilizar el sistema de representación complemento a 1 o el sistema de representación complemento a 2, para lo que se deberán convertir los datos al sistema de representación elegido. 35

3.1.2 Suma en Sistema de Representación de Complemento a 2. Los siguientes ejemplos muestran los distintos casos de suma en este sistema de representación, el cual utiliza el bit 7 como bit de signo. Debido a esto solo 7 bits (bits 0 al 6) son utilizados para representar la magnitud, lo que implica que el rango de representacioón es de -128 a +127, por tener una única representación del cero. Para este sistema realizaremos los mismos ejemplos que se dieron en el caso anterior, observando que los contenidos del acumulador y los flags son los mismos, ya que la suma binaria es una sola, lo que sera diferente es la interpretación de los resultados para algunos casos. Ejemplo 3 a) Ambos operandos son positivos, la suma no excede el campo de representación, por lo tanto el resultado de la operación es el correcto. 01110000 70 +112 00000111 07 + 7 ------------ ---- ------- 01110111 77 +119 Cy = 0 S = 0 OV = 0 Se observa que el ejemplo 3 a es idéntico al 2 a. b) Ambos operandos son positivos, la suma excede el campo de representación, por lo tanto el resultado de la operación no es el correcto. 01110000 70 +112 00110000 30 + 48 ------------- ---- ------- 10100000 A0-96 en SRC2 (debería ser +160) CY = 0 S = 1 OV = 1 Note que en el ejemplo 3b el rango positivo de +127 es excedido por la suma. El carry desde el bit 6 fue propagado sobre el bit 7, el bit de signo y el bit 7 del resultado se ponen a 1, indicando incorrectamente que la suma es un número negativo. El resultado aparece como -96 en la forma de SRC2. Además ningún transporte fue generado desde el bit 7 al registro de carry, por lo tanto el registro de carry contiene un cero. El otro registro (overflow) se pone en 1, indicando que la suma excedió el campo de representación. Asumiendo que el microcomputador posee un registro de carry y otro de overflow, la suma del ejemplo 3b debería aparecer de la siguiente forma. 36