Introducción a la Informática



Documentos relacionados
Introducción a la Informática

Los sistemas de numeración se clasifican en: posicionales y no posicionales.

Sistemas de Numeración Operaciones - Códigos

Tema 4: Sistemas de Numeración. Codificación Binaria. Escuela Politécnica Superior Ingeniería Informática Universidad Autónoma de Madrid

Representación de la Información


Capítulo 2 REPRESENTACIÓN DE LOS DATOS. Presentación resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN lenguaje C"

Unidad I. 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal)

EIE SISTEMAS DIGITALES Tema 2: Sistemas de Numeración, Operaciones y Códigos

Clase 02: Representación de datos

1. SISTEMAS DIGITALES

21/02/2012. Agenda. Unidad Central de Procesamiento (CPU)

Representación de números en binario

En la actualidad ASCII es un código de 8 bits, también conocido como ASCII extendido, que aumenta su capacidad con 128 caracteres adicionales

1. Informática e información. 2. Sistemas de numeración. 3. Sistema binario, operaciones aritméticas en binario, 4. Sistemas octal y hexadecimal. 5.

Escuela Politécnica Superior Ingeniería Informática Universidad Autónoma de Madrid

Computación I Representación Interna Curso 2011

TEMA 2: Representación de la Información en las computadoras

ANEXO 2: REPRESENTACION DE LA INFORMACION EN LOS COMPUTADORES

❷ Aritmética Binaria Entera

ARQUITECTURA DE LAS COMPUTADORAS PRACTICA

TEMA 1 Representación de la información

SISTEMAS DE NUMERACIÓN. Sistema decimal

Tema I. Sistemas Numéricos y Códigos Binarios

Capítulo 1: Sistemas de representación numérica Introducción. Dpto. de ATC, Universidad de Sevilla - Página 1 de 8

Tema 2. La Información y su representación

Introducción a la Programación 11 O. Humberto Cervantes Maceda

Informática Bioingeniería

Aritmética finita y análisis de error

Sistema binario. Representación

Unidad de trabajo 2: INFORMÁTICA BÁSICA (primera parte)

by Tim Tran:

Sistemas Digitales Ingeniería Técnica en Informática de Sistemas Curso Aritmética binaria

Matemáticas para la Computación

Matemática de redes Representación binaria de datos Bits y bytes

Guía 01: Sistemas Numéricos

Estructura y Tecnología de Computadores (ITIG) Luis Rincón Córcoles José Ignacio Martínez Torre Ángel Serrano Sánchez de León.

Estructura de Computadores

Informática Básica: Representación de la información

Representación de Datos. Una Introducción a los Sistemas Numéricos

Tema 1. Representación de la información MME

Sistemas de numeración, operaciones y códigos

UD 1. Representación de la información

DESARROLLO DE HABILIDADES DEL PENSAMIENTO LÓGICO

UNIDADES DE ALMACENAMIENTO DE DATOS

UNIDAD 3: ARITMÉTICA DEL COMPUTADOR

Lección 1. Representación de números

Materia: Informática. Nota de Clases Sistemas de Numeración

Informática 1 Sistemas numéricos: decimal, binario, octal y hexadecimal FCFA Febrero 2012

Lógica Binaria. Arquitectura de Ordenadores. Codificación de la Información. Abelardo Pardo Universidad Carlos III de Madrid

Apuntes de Microcontroladores (Repaso de temas previos)

Sistemas de Numeración

Organización del Computador. Prof. Angela Di Serio

1.1 Sistema de numeración binario

SISTEMAS NUMÉRICOS (SISTEMAS DE NUMERACIÓN)

UNIVERSIDAD TECNOLÓGICA NACIONAL FACULTAD REGIONAL CÓRDOBA EL LENGUAJE DE LOS DATOS EN LA PC Y SU FORMA DE ALMACENAMIENTO

Taller de Informática I Dpto. Computación F.C.E. y N. - UBA 2010

SISTEMAS NUMERICOS CAMILO ANDREY NEIRA IBAÑEZ UNINSANGIL INTRODUCTORIO A LA INGENIERIA LOGICA Y PROGRAMACION

Tema 1 - Sistemas numéricos y códigos

Sistemas de numeración

Representación de números enteros: el convenio signo y magnitud

Fundamentos de Programación. Sabino Miranda-Jiménez

Área Académica: Ingeniería en Computación. Profesor: M. en C. Evangelina Lezama León

UNIDAD Nº 1: 1. SISTEMAS DE NUMERACION. Formalizado este concepto, se dirá que un número X viene representado por una cadena de dígitos:

INSTITUTO UNIVERSITARIO DE TECNOLOGÍA JOSE LEONARDO CHIRINO PUNTO FIJO EDO-FALCON CATEDRA: ARQUITECTURA DEL COMPUTADOR PROFESOR: ING.

SISTEMAS NUMERICOS. Ing. Rudy Alberto Bravo

Introducción a Códigos

TEMA 2 REPRESENTACIÓN BINARIA

parte del tiempo de procesamiento en realizar este tipo de Es importante por que una computadora consume gran

LABORATORIO DE COMPUTADORAS

Representación en Punto Flotante

Solución: exp Febrero, primera semana. Paso 1º: Cálculo del campo exponente. Según el apartado a) del primer corolario: 53.

Tema 2 : Códigos Binarios

Introducción a los Sistemas Digitales

Sistemas de numeración, operaciones y códigos.

Sebastián García Galán

Unidad Didáctica. Códigos Binarios

ELO311 Estructuras de Computadores Digitales. Números

Electrónica Digital I (ED21) Sesión: 3 Aritmética Binaria. Ing. José C. Benítez P.

Aritmética del computador. Departamento de Arquitectura de Computadores

Representación de Datos y Aritmética Básica en Sistemas Digitales

SISTEMAS DE NUMERACIÓN. Sistema de numeración decimal: = =8245,97

EL LENGUAJE DE LAS COMPUTADORAS

Aritmética Binaria. Luis Entrena, Celia López, Mario García, Enrique San Millán. Universidad Carlos III de Madrid

Tema 2: Sistemas de representación numérica

Primeros conmutadores: diodos de cristal y de tubos de vacío (1906). Transistor (TRT): más pequeño y fiable, de material semiconductor (1950).

Matemáticas Básicas para Computación

3. Codificación de información en binario

Tema 1. SISTEMAS DE NUMERACION

Realizado por Pablo Yela

Sistemas numéricos. Aurelio Sanabria Taller de programación

Notas de Diseño Digital

EJERCICIOS RESUELTOS SOBRE ERRORES DE REDONDEO

Informática. Temas 27/03/2014. Carrera: Bioingeniería Profesora: Lic. S. Vanesa Torres JTP: Ing. Thelma Zanon

Sistemas de numeración y aritmética binaria

INFORMÁTICA. Matemáticas aplicadas a la Informática

Buceando en los MCUs Freescale...

Unidad 1 Sistemas de numeración Binario, Decimal, Hexadecimal

El sistema decimal, es aquél en el que se combinan 10 cifras (o dígitos) del 0 al 9 para indicar una cantidad específica.

TEMA 1: SISTEMAS INFORMÁTICOS. Parte 2: representación de la información

Transcripción:

DAI Departamento Académico de Informática Introducción a la Informática L21: Representación de datos en Sistemas de Computadoras Ingº Manuel Peñaloza Figueroa Objetivos: Entender los fundamentos de la representación y manipulación numérica de los datos en computadoras digitales. Dominar la habilidad de convertir entre varios sistemas radix (radix = base de un sistema numérico) Entender como los errores pueden ocurrir en los cálculos por causa del: desbordamiento (overflow) truncamiento 2 1

Objetivos: Ganar familiaridad con los mas populares códigos de caracteres. Darse cuenta de las diferencias entre: como la data es almacenada en la memoria del computador como la data es transmitida sobre las líneas de telecomunicaciones (y) como la data es almacenada en discos. Entender los conceptos de detección de errores y códigos de corrección. 3 bit, Byte, word, nibble Un bit es la unidad de información más básica en una computadora. Es un estado de "on" ó "off" en un circuito digital. Algunas veces estos estados son voltaje "high" (alto) ó "low" (bajo) en vez de "on" ó "off". Un byte es un grupo de 8 bits. Un byte es la unidad direccionable mas pequeña posible del almacenamiento de una computadora. El término, "direccionable" significa que un byte particular puede ser recuperado de acuerdo con su localización en memoria. 4 2

bit, Byte, word ó palabra, nibble Una palabra ó word es un grupo contiguo de bytes ó bits. Las palabras ó words pueden ser cualquier número de bits ó bytes. Tamaños de palabra ó word de 16, 32, ó 64 bits son los más comunes. En un sistema direccionable-por-palabra, una palabra es la más pequeña unidad de almacenamiento direccionable. Un nibble/nybble es un grupo de 4 bits El Byte, por lo tanto, consiste de 2 nibbles: Un nibble de "alto-orden" Un nibble de "bajo-orden" 5 Sistemas de Numeración posicional: Los Bytes almacenan números: El sistema binario es también llamado sistema de base-2. 2 símbolos la posición de cada bit representa una potencia de 2. El sistema decimal es el sistema de base-10. 10 símbolos Usa potencias de 10 para cada posición en un número. Cualquier cantidad entera puede ser representado exactamente usando cualquier base (ó radix). 6 3

Sistemas de Numeración posicional: El número decimal 947 en potencias de 10 es: 947 = 9 10 2 + 4 10 1 + 7 10 0 El número decimal 5836.47 en potencias de 10 es: 5 10 3 + 8 10 2 + 3 10 1 + 6 10 0 + 4 10-1 + 7 10-2 7 Sistemas de Numeración posicional: El número binario 11001 en potencias de 2 es: 11001 = 1 2 4 + 1 2 3 + 0 2 2 + 0 2 1 + 1 2 0 = 16 + 8 + 0 + 0 + 1 = 25 Cuando el radix de un número es algo otro que 10, la base es denotado por un subíndice. Algunas veces, el subíndice 10 es agregado por énfasis: 11001 2 = 25 10 8 4

Conversión de Decimal a Binario: Porque los números binarios son la base para toda representación de datos en sistemas de computadoras digitales, es importante que se vuelva competente con este sistema radix. El conocimiento del sistema de numeración binaria habilita a entender la operación de todos los componentes de la computadora así como el diseño de las arquitecturas del juego de instrucciones ISA ISA = Instruction Set Architecture 9 Conversión de Decimal a Binario: En un slide previo, se dijo que cada valor entero puede ser representado exactamente usando cualquier sistema radix ó cualquier base. Se puede usar cualquiera de 2 métodos para conversión radix: El método de substracción es más intuitivo, pero engorroso, sin embargo refuerza las ideas detrás de la matemáticas radix. El método del resto de la división. 10 5

Conversión de Decimal a Binario: Suponga que se desea convertir el número decimal 190 a base 3. Se sabe que 3 5 = 243, así ello es demasiado grande. La más grande potencia de 3 que se necesita es por lo tanto 3 4 = 81, y se necesitará 2 de estos, así 81 2 = 162. Escribir el 2 y substraer 162 de 190, dando 28.. 11 Conversión de Decimal a Binario: Convertir 190 a base 3... La siguiente potencia de 3 es 3 3 = 27, se necesitará 1 de estos, así se substrae 27 y se toma nota del numeral 1 en el resultado. La siguiente potencia de 3, 3 2 = 9, es demasiado grande, se tiene que asignar un símbolo de cero y acarrear el 1... 12 6

Conversión de Decimal a Binario: Convertir 190 a base 3... La siguiente potencia de 3 es 3 3 = 27, se necesitará 1 de estos, así se substrae 27 y se toma nota del numeral 1 en el resultado. La siguiente potencia de 3, 3 2 = 9, es demasiado grande,... se tiene que asignar un símbolo de cero y acarrear el 1... 13 Conversión de Decimal a Binario: Convertir 190 a base 3... 3 1 = 3 es de nuevo demasiado grande, así se asigna un símbolo de cero. La última potencia de 3, 3 0 = 1, es la última elección, y ello da una diferencia de cero. El resultado, leyendo de arriba hacia abajo es: 190 10 = 21001 3 14 7

Conversión de Decimal a Binario: Otro método para convertir enteros desde decimal a algún otro radix ó base es usar la división: Este método es mecánico y fácil. Emplea la idea que la división sucesiva por la base es equivalente a substracciones sucesivas por potencias de la base. Ejercicio: Usar el método del resto de la división para de nuevo convertir 190 en decimal a base 3. 15 Conversión de Decimal a Binario: Convertir 190 a base 3 Primero tomar el número que se desea convertir y dividirlo por el radix en el cual se desea expresar el resultado. En este caso, 3 divide 190 63 veces, con un resto de 1. Registrar el cociente y el resto. 16 8

Conversión de Decimal a Binario: Convertir 190 a base 3 63 es lisamente divisible por 3. El cociente es 21 y el resto es cero. 17 Conversión de Decimal a Binario: Convertir 190 a base 3 Continuar de esta manera hasta que el cociente sea cero. En el cálculo final, se observa que 3 divide a 2 cero veces con un resto de 2. El resultado, leyendo de abajo hacia arriba es: 190 10 = 21001 3 18 9

Conversiones Decimal a Binario Valores fraccionarios pueden ser aproximados en todos los sistemas base. A diferencia de los valores enteros, las fracciones no necesariamente tienen representaciones exactas bajo todos los radix ó bases. La cantidad ½ es exactamente representable en los sistema binario y decimal, pero no lo es en el sistema de numeración ternaria (base 3). 19 Conversiones Decimal a Binario Valores fraccionarios: del sistema decimales tienen dígitos no-cero a la derecha del punto decimal. de otros sistemas radix tienen dígitos no-cero a la derecha del punto radix. Numerales a la derecha de un punto radix representan potencias negativas del radix: 0.47 10 = 4 10-1 + 7 10-2 0.11 2 = 1 2-1 + 1 2-2 = ½ + ¼ = 0.5 + 0.25 = 0.75 20 10

Conversiones Decimal a Binario Como con conversiones de números enteros, se puede usar cualquiera de 2 métodos: Método de la substracción Método de la multiplicación El método de substracción para fracciones es idéntica al método de substracción para números enteros. En vez de substraer potencias positivas del radix objetivo, se substraen potencias negativas del radix. Siempre se comienza con el mas grande valor primero: n -1, donde n es nuestro radix, y se prosigue adelante usando exponentes negativos mas grandes. 21 Conversiones Decimal a Binario El cálculo a la derecha es un ejemplo de usar el método de substracción para convertir el decimal 0.8125 a binario. El resultado, leyendo desde arriba abajo es: 0.8125 = 0.1101 2 Por supuesto, este método trabaja con cualquier base, no solamente el binario. 22 11

Conversiones Decimal a Binario Usando el método de la multiplicación para convertir el decimal 0.8125 a binario. Se multiplica por el radix es decir por 2 (en este caso). El producto más a la izquierda acarrea dentro del lugar de las unidades. 23 Conversiones Decimal a Binario Convertir 0.8125 a binario Ignorar el valor en el lugar de las unidades en cada paso. Continuar multiplicando cada parte fraccional por el radix. 24 12

Conversiones Decimal a Binario Convertir 0.8125 a binario Se termina cuando el producto es cero, ó hasta que se haya alcanzado del número deseado de lugares decimales. El resultado leyendo desde arriba hacia abajo es: 0.8125 10 = 0.1101 2 Este método también trabaja con cualquier base. Precisamente se usa el radix objetivo como el multiplicador. 25 Conversiones Decimal a Binario El sistema de numeración binaria es el mas importante sistema radix para computadoras digitales. Sin embargo, es difícil leer largos strings de números binarios e incluso un número decimal de tamaño modesto se vuelve un número binario muy grande. Por ejemplo: 11010100011011 2 = 13595 10 Por compactación y facilidad de lectura, valores binarios son usualmente expresados usando el sistema de numeración hexadecimal, o base-16. 26 13

Conversiones Decimal a Binario El sistema de numeración hexadecimal usa los números 0.. 9 y las letras A, B, C, D, E, F. El número decimal 12 es C 16 El número decimal 26 es 1A 16 Es fácil convertir entre base 16 y base 2 por que 16 = 2 4 Así, para convertir desde binario a hexadecimal, todo lo que se necesita hacer es agrupar los dígitos binarios en grupos de 4. un grupo de 4 dígitos binarios es llamado un hexteto 27 Conversiones Decimal a Binario Usando grupos de hextetos, el número binario 11010100011011 2 (= 13595 10 ) en hexadecimal es: Valores octales (base 8) son derivados del binario con usar grupos de 3 bits (8 = 2 3 ): Octal fue muy útil cuando computadoras usaban palabras de 6-bits 28 14

Representación de enteros con signo Las conversiones hasta aquí presentadas han involucrado solo números positivos. Para representar valores negativos, sistemas de computador asignan el bit de alto-orden para indicar el signo de un valor. El bit de alto-orden es el bit más a la izquierda. Es también llamado el bit mas significante. Los bits restantes contienen el valor del número. 29 Representación de enteros con signo Hay 3 modos en el cual números binarios con signo pueden ser expresados: Signo-magnitud Complemento a 1 Complemento a 2 30 15

Representación de enteros con signo En una palabra de 8-bit, la representación signomagnitud coloca el valor absoluto del número en los 7 bits a la derecha del bit de signo. Por ejemplo: en signo-magnitud de 8-bit: El 3 positivo es : 00000011 El 3 negativo es: 10000011 Computadoras ejecutan operaciones aritméticas sobre números signo-magnitud en mucho en el mismo modo como humanos llevan a cabo aritmética con lápiz y papel. Los humanos con frecuencia ignoran los signos de los operandos mientras ejecutan un cálculo, aplicando el signo apropiado después que 31 el cálculo está completo. Representación de enteros con signo La adición binaria es fácil: Se necesita conocer solamente 4 reglas: 0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 10 La simplicidad de este sistema hace posible para los circuitos digitales llevar a cabo operaciones aritméticas. Se describirán estos Ver circuitos como las en reglas detalle de después. adición trabajan con números en signo-magnitud 32 16

Representación de enteros con signo Ejemplo: Usando aritmética binaria singomagnitud, encontrar la suma de 75 y 46: convertir 75 y 46 a binario Arreglar como una suma Separar los bits de signo (signo positivo) de los bits de magnitud. 33 Representación de enteros con signo Ejemplo: Usando aritmética binaria magnitud con signo, encontrar la suma de 75 y 46: Justamente como en aritmética decimal, se encuentra la suma comenzando con el bit más hacia la derecha y trabajando hacia la izquierda. 34 17

Representación de enteros con signo Ejemplo: Usando aritmética binaria magnitud con signo, encontrar la suma de 75 y 46: En el segundo bit, se tiene un acarreo, así se anota o apunta arriba del tercer bit. 35 Representación de enteros con signo Ejemplo: Usando aritmética binaria magnitud con signo, encontrar la suma de 75 y 46: El tercer y cuarto bits también da acarreo. 36 18

Representación de enteros con signo Ejemplo: Usando aritmética binaria magnitud con signo, encontrar la suma de 75 y 46: Una vez que se ha trabajado por todos los 8 bits, está hecho. En este ejemplo, se fue cuidadoso de escoger 2 valores cuya suma encajase en 7 bits. Si ese no el caso, se tiene un problema. 37 Representación de enteros con signo Ejemplo: Usando aritmética binaria magnitud con signo, encontrar la suma de 107 y 46: Se ve que el acarreo desde el sétimo bit overflows y es descartado, dando el resultado erróneo. 107 + 46 = 25 38 19

Representación de enteros con signo Los signos en representación de magnitud con signo trabajan justamente como lo signos en aritmética de lápiz y papel. Ejemplo: usando aritmética binaria signo-magnitud encontrar la suma de - 46 y - 25. Porque los signos son los mismo, todo lo que se tiene que hacer es sumar los números y proveer el signo negativo cuando esté hecho. 39 Signo-magnitud Adición con signo mezclada (o substracción) es hecha del mismo modo. Ejemplo: Usando aritmética binaria de signo - magnitud, encontrar la suma de 46 y - 25. El signo del resultado se obtiene del signo del número que es mas grande. Observe el "pedir prestado" del segundo y sexto bits. 40 20

Signo-magnitud La representación de signo-magnitud es fácil para la gente entender, pero requiere hardware de computadora complicado. Otra desventaja de signo-magnitud es que permite 2 diferentes representaciones para el cero: Cero positivo +0 Cero negativo - 0 Por esta razones (entre otros) los sistemas de computadoras emplean sistemas de complemento para representación del valor numérico. 41 Sistemas de Complemento En sistemas de complemento, valores negativos son representados por alguna diferencia entre un número y su base. En sistemas de complemento a base disminuida, un valor negativo es dado por la diferencia entre el valor absoluto de un número y uno menos que su base. En el sistema binario, esto da complemento a 1. Ello asciende a poco mas que invertir los bits de un número binario. 42 21

Complemento a 1 El complemento a 1 en binario se obtiene cambiando los unos por ceros y los ceros por unos. La representación de números positivos en complemento a 1 sigue las mismas reglas del sistema signo-magnitud. La representación de los números negativos en complemento a 1 es el complemento a 1 del número positivo. Ejemplo: El número decimal 21 se expresa en complemento a 1 a 6 bits como 010101, donde el primer bit "0" denota el bit de una magnitud positiva. El complemento a 1 a 6 bits del decimal 21, se obtiene por medio del complemento a 1 del número positivo 43 010101, el cual es 101010. Complemento a 1 Por ejemplo: en complemento a 1 de 8-bit: 3 positivo es: 00000011 3 negativo es: 11111100 En complemento a 1 como en signo-magnitud, los valores negativos son indicados por un 1 en el bit de alto orden. Sistemas de complemento son útiles porque ellos eliminan la necesidad por circuitería especial para substracción. La diferencia de 2 valores es encontrado con agregar al minuendo el complemento del sustraendo. 44 22

Complemento a 1 Por ejemplo: en Circuito de inversores que ejemplifica el complemento a 1 de una expresión 45 Complemento a 1 En la adición con complemento a 1, el bit de acarreo es llevado consigo y agregado a la suma. Ejemplo: usando aritmética binaria de complemento a 1, encontrar la suma de 48 y 19. 48 19 = 29 Note que: 19 en complemento a 1 es: 00010011-19 en complemento a 1 es: 46 11101100 23

Complemento a 1 Aunque el llevar consigo final agrega alguna complejidad, el complemento a 1 es más simple para implementar que signo magnitud. Pero todavía tiene la desventaja de tener 2 representaciones diferentes para el cero; Cero positivo Cero negativo. Complemento a 2 soluciona este problema. Complemento a 2 es el complemento radix del sistema de numeración binaria. 47 Complemento a 2 Para expresar un valor en complemento a 2: Si el número es positivo, justamente convertirlo a binario y ya está hecho. Si el número es negativo, encontrar el complemento a 1 del número y entonces sumar 1, el resultado es la representación del número en complemento a 2. Ejemplo: En complemento a 1 de 8-bit, 3 positivo es : 00000011 En complemento a 1 de 8-bit, 3 negativo es: 11111100 En complemento a 2 de 8-bit, 3 negativo es: 48 11111100 24

Complemento a 2 Ejemplo: representar el número 5 10 en binario, utilizando complemento a 2 de 5-bit. Escribir el número +5 10 en binario de 5-bit: 00101 Obtener el complemento a 1 de: 00101: 11010 Al complemento del número anterior se la suma 1: 11011 Verificación: -1x2 4 + 1x2 3 + 0x2 2 + 1x2 1 + 1x2 0 = -16 + 8 + 0 + 2 + 1 = -5 10 En complemento 2, el primer bit (es decir el más significativo) puede interpretarse como el signo, siendo cero para números positivos y 1 para números negativos. 49 Complemento a 2 Resta binaria en Complemento a 2: Se puede observar que el signo de un número positivo ó negativo se cambia calculando su complemento a 2. La resta de dos números con signo se calcula sumando el complemento a 2 del sustraendo al minuendo y descartando cualquier bit de acarreo final. El siguiente procedimiento es necesario para calcular la resta de dos números: Obtener el complemento a 2 del sustraendo. Efectuar la suma del minuendo y el sustraendo en complemento a 2. Sí la suma presenta rebasamiento indica que la repuesta es positiva, ignorar el rebasamiento. Si no hay rebasamiento, entonces la repuesta es negativa. Para obtener la magnitud del 50número binario, obtenga el l t 2 d l 25

Complemento a 2 Ejemplo: substraer (1010111 1001000) 2 El complemento a 2 de 1001000 = 0110111 + 1 0111000 Sumamos el 1 er sumando y el complemento a 2 obtenido: binario decimal 1 1 1 1 0 1 0 1 1 1 87 + 0 1 1 1 0 0 0-72 1 0 0 0 1 1 1 1 15 rebasamiento (se ignora) La respuesta es 0001111 2 = 1x2 3 + 1x2 2 + 1x2 1 + 1x2 0 = 8 + 4 + 2 + 1 51 15 Complemento a 2 Ejemplo: substraer (0001001 0001111) 2 El complemento a 2 de 0001111 = 1110000 + 1 1110001 Sumamos el 1 er sumando y el complemento a 2 obtenido: binario decimal 0 0 0 1 0 0 1 9 + 1 1 1 0 0 0 1-15 1 1 1 1 0 1 0-6 no hay rebasamiento En complemento a 2: - 6 es: + 6 = 0000110 1111001 1 52 + 26

Complemento a 2 Con aritmética de complemento a 2, todo lo que se hace es sumar 2 números binarios. Justamente descartar cualquier acarreo que se produzca a partir del bit de alto-orden. Ejemplo: usando aritmética binaria de complemento a 2, encontrar la suma de 48 y -19 (a 8-bit). 48 19 = 29 Note que: 19 en complemento a 1 es: 00010011-19 en complemento a 1 es: 11101100 53 Complemento a 2 Cuando se usa cualquier número finito de bits para representar un número, siempre se corre el riesgo de que el resultado de los cálculos se vuelva demasiado grande para ser almacenado en el computador. Mientras no siempre se pueda prevenir overflow, siempre se puede detectar overflow. En aritmética con complemento, una condición de overflow es fácil de detectar. 54 27

Complemento a 2 Ejemplo: Usando aritmética binaria de complemento a 2, encontrar la suma de 107 y 46 a 8-bit. Se ve que el acarreo nocero desde el séptimo bit overflows dentro el bit de signo, dando el resultado erróneo de: 107 + 46 = - 103 Regla en el para bit de detectar signo: bit overflow C in = 1en complemento a 2: Cuando el bit carry in y el bit carry out del bit de signo difieren, overflow ha bit C out = 0 ocurrido. 55 Complemento a 2 Multiplicación Binaria En la multiplicación de dos cantidades binarias es necesario considerar lo siguiente: La multiplicación binaria cumple las mismas reglas de la multiplicación decimal. 56 28

Complemento a 2 Multiplicación Binaria Ejemplo: multiplicar las cantidades 1011 y 1101 57 Complemento a 2 Multiplicación con signo Se representan los operandos en complemento 2 y el resultado también se obtiene en complemento 2. El último multiplicando desplazado se niega. 58 29

Complemento a 2 Observar lo siguiente: +3 = 00000011 +2 = 00000010 +1 = 00000001 +0 = 00000000-1 = 11111111-2 = 11111110-3 = 11111101 59 Complemento a 2 Beneficios: Una representación del cero La aritmética trabaja fácilmente Negar es medianamente fácil 3 = 00000011 el complemento Booleano da: 11111100 sumar 1 al LSB : 11111101 60 30

Complemento a 2 Rango de números: Complemento a 2 de 8-bit +127 = 01111111 = 2 7-1 -128 = 10000000 = -2 7 Complemento a 2 de 16-bit +32767 = 01111111 11111111 = 2 15 1-32768 = 10000000 00000000 = -2 15 61 Complemento a 2 Conversión entre longitudes: Números positivos de empaquetan con 0 s delanteros +18 = 00010010 +18 = 00000000 00010010 Números negativos se empaquetan con 1 s delanteros -18 = 10010010-18 = 11111111 10010010 i.e. empaquetar con MSB (bit de signo) 62 31

Complemento a 2 Adición: Adición normal binaria Monitorear bit de signo por overflow Substracción Tomar el complemento a 2 del sustraendo y sumar al minuendo i.e. a - b = a + (-b) Así solo se necesita circuitos de adición y complemento. 63 Complemento a 2 Hardware para adición y substracción: 64 32

Punto Flotante La representación signo-magnitud, complemento a 1 y complemento a 2 que se ha justamente presentado trata con valores enteros solamente. Sin modificación, estos formatos no son útiles en aplicaciones científicas o de negocios que tratan con valores de números reales. La representación en punto-flotante soluciona este problema. 65 Punto Flotante Si se es un programador listo, se puede ejecutar cálculos de punto-flotante usante cualquier formato entero. Esto es llamado emulación de punto-flotante, porque los valores de punto flotante no son almacenados como tales, justamente se crean programas que hacen parecer como si valores de punto flotante están siendo usados. La mayor parte de las computadoras de hoy en día están equipadas con hardware especializado que ejecuta aritmética de punto-flotante sin ninguna programación especial requerida. 66 33

Punto Flotante Números reales La línea de números reales puede ser dividida en 7 regiones. 67 Punto Flotante Números reales 7 regiones de los números reales Large negative numbers less than 0.999 10 99. Negative numbers between 0.999 1099 and 0.100 10 99. Small negative numbers, magnitudes less than 0.100 10 99. Zero. Small positive numbers, magnitudes less than 0.100 10 99. Positive numbers between 0.100 10 99 and 0.999 1099. Large positive numbers greater than 0.999 10 99. 68 34

Punto Flotante Números en punto-flotante permiten un número arbitrario de lugares decimales a la derecha del punto decimal. Por ejemplo: 0.5 0.25 = 0.125 Ellos son con frecuencia expresados en notación científica. Por ejemplo: 0.125 = 1.25 10-1 5'000,000 = 5.0 10 6 69 Punto Flotante Computadores usan una forma de notación científica para representación en punto-flotante. Números escritos en notación científica tienen 3 componentes: Signo Mantisa Exponente 70 35

Punto Flotante La representación en computadora de un número de punto-flotante consiste de 3 campos de tamaño-fijo: Este es el arreglo estándar de estos campos. 71 Punto Flotante El campo de signo de 1-bit es el signo del valor almacenado. El tamaño del campo exponente, determina el rango de valores que pueden ser representados. El tamaño del significando determina la precisión de la representación. 72 36

Punto Flotante La IEEE-754 Estándar de punto flotante de simple precisión usa un exponente de 8-bit y un significando de 23-bit, es decir 1 + 8 + 23 = 32 bits. La IEEE-754 Estándar de doble precisión usa un exponente de 11-bit y un significando de 52-bit, es decir 1 + 11 + 52 = 64 bits. Para propósitos ilustrativos se usará un modelo de 14-bit con un exponente de 5-bit y un significando de 8-bit. 73 Punto Flotante Formatos IEEE 754 74 37

Punto Flotante El significando de un número de punto flotante está siempre precedido por un punto binario implícito. El significando siempre contiene un valor binario fraccional. El exponente indica la potencia de 2 al cual el significando es elevado. 75 Punto Flotante Ejemplo: Exprese 32 10 en el modelo de punto-flotante de 14-bit simplificado. Se sabe que 32 es 2 5 Así en notación científica (binaria) 32 = 1.0 x 2 5 = 0.1 x 2 6 Usando esta información, se pone 110 = 6 10 en el campo exponente y 1 en el significando como se muestra: 76 38

Punto Flotante Las ilustraciones mostradas a la derecha son todas representaciones equivalentes para el # 32 usando el modelo simplificado. No solo esta representaciones sinónimas gastan espacio, sino que pueden también causar confusión. 77 Punto Flotante Otro problema con el sistema es que no se ha tenido en cuenta exponentes negativos. No se tiene modo de expresar 0.5 =2-1 ( note que no hay signo en el campo exponente) Todos estos problemas pueden ser fijados o arreglados con ningún cambio al modelo básico. 78 39

Punto Flotante Para resolver el problema de formas sinónimas, se establecerá una regla que el primer dígito del significando tiene que ser 1. Esto resulta en un único patrón para cada número de punto-flotante. En el estándar IEEE-754, este 1 es implícito significando que un 1 es asumido después del punto binario. Con usar un 1 implícito, se incrementa la precisión de la representación por una potencia de 2. En el modelo instructivo simple no se usará bits implícitos 79 Punto Flotante Para prever exponentes negativos, se usará un exponente polarizado (biased). Una polarización es un número que es aproximadamente medio en el rango de valores expresables por el exponente. Se substrae la polarización del valor en el exponente para determinar su verdadero valor. Para el caso, se tiene un exponente de 5-bit (2 5 = 32 32/2 = 16). Se usará 16 para la polarización. Esto es llamado representación exceso-16. Para el modelo, valores de exponente menor que 16 son negativos, representando números fraccionales. 80 40

Punto Flotante Ejemplo: Expresar 32 10 en el modelo revisado de punto-flotante de 14-bit (signo de 1-bit, exponente de 5-bit, significando de 8-bit). Se sabe que 32 = 1.0 x 2 5 = 0.1 x 2 6 Para usar exponente polarizado exceso-16, se agrega 16 a 6, dando 22 10 =10110 2. Gráficamente: 81 Punto Flotante Ejemplo: Expresar 0.06250 en el modelo revisado de puntoflotante de 14-bit. Se sabe que 0.0625 es 2-4 Así, en notación científica (binaria) 0.0625 10 = 0.0001 2 = 1.0 x 2-4 = 0.1 x 2-3. Para usar exponente polarizado exceso-16, se agrega 16 a -3, dando 13 10 = 01101 2 82 41

Punto Flotante Ejemplo: Expresar -26.625 10 en el modelo revisado de puntoflotante de 14-bit. Se encuentra que 26.625 10 = 11010.101 2 Normalizando, se tiene: 26.625 10 = 0.11010101 x 2 5 Para usar exponente polarizado exceso-16, se agrega 16 a 5, dando 21 10 = 10101 2 También se necesita un 1 en el bit de signo. 83 Punto Flotante El estándar IEEE-754 de punto flotante de simple precisión usa una polarización de 127 sobre su exponente de 8-bit. Un exponente de 255 indica un valor especial: Si el significando es cero: el valor es ± infinito. Si el significando es no-cero, el valor es NaN "no un número", con frecuencia usado para "flag" un condición de error. El estándar de doble precisión tiene una polarización de 1023 sobre su exponente de 11- bit. El valor de exponente "especial" para un número de doble precisión es 2047, en vez del 255 usado para el estándar de simple precisión. 84 42

Punto Flotante Estándar IEEE-754 s: signo de la fracción e: exponente polarizado ó sesgado f: fracción 85 Punto Flotante Estándar IEEE-754 Convenciones El punto binario está a la izquierda del bit más significativo del campo f. Se inserta un bit 1 implícito a la izquierda del punto binario (lo cual amplía la representación en 1 bit). Valor del número: n = ( 1) (2 )(1. f ) s e p se deriva de los 3 campos mediante la siguiente fórmula: donde: n = número (en decimal) p = 127 para simple precisión p = 1023 para doble precisión 86 43

Punto Flotante Estándar IEEE-754: Ejemplo 1: codificar el número decimal 118.625 usando IEEE 754 de 32-bit: Obtener el signo El # es negativo ==> el signo es 1 Escribir el número (sin el signo) usando notación binaria 118 10 = 1110110 2 0.625 10 = 0.101 2 118.625 = 1110110.101 Normalizar el # Mover el punto radix (a la derecha/izquierda) de modo que quede solo un 1 a la izquierda del punto radix. 1110110.101 = 1.110110101 2 6 87 Punto Flotante Estándar IEEE-754 Ejemplo 1: Obtener la fracción La mantisa es la fracción (la parte a la derecha del punto radix), completada con ceros a la derecha hasta obtener los 23-bit f =11011010100000000000000 Polarizar el exponente y convertirlo a binario Para el formato IEEE 754 de 32-bit la polarización es 127 e = 6 + 127 = 133 ==> 133 10 = 10000101 2 88 44

Punto Flotante Estándar IEEE-754: Ejemplo 2: codificar el número decimal +1.15625 usando el estándar IEEE 754 de 32-bit: Obtener el signo El # es positivo ==> el signo es 0 Escribir el número (sin el signo) usando notación binaria 1 10 = 1 2 0.15625 10 = 0.00101 2 1.15625 10 = 1.00101 2 Normalizar el # Mover el punto radix (a la derecha/izquierda) de modo que quede solo un 1 a la izquierda del punto binario 1.00101 = 1.00101 2 0 89 Punto Flotante Estándar IEEE-754 Ejemplo 2: Obtener la fracción La mantisa es la fracción (la parte a la derecha del punto radix), completada con ceros a la derecha hasta obtener los 23-bit f =00101000000000000000000 Polarizar/sesgar el exponente y convertirlo a binario (completar a 8 bits si fuera necesario con ceros a la izquierda) Para el formato IEEE 754 de 32-bit la polarización es 127 e = 0 + 127 = 127 ==> 127 10 = 1111111 2 = 01111111 2 90 45

Punto Flotante IEEE-754 de punto flotante de simple-precisión: 91 Punto Flotante Estándar IEEE-754 92 46

Punto Flotante Estándar IEEE-754 IEEE numerical types. 93 Punto Flotante Tanto el modelo de 14-bit que se ha presentado y el estándar IEEE-754 de punto flotante permiten 2 representaciones para el cero. Cero es indicado con todos ceros en el exponente y en el significando, pero el bit de signo puede ser ó 0 ó 1. Este es porque los programadores deben de evitar testear un valor de punto-flotante por igualdad a cero. Cero negativo no iguala al cero positivo. 94 47

Punto Flotante La adición y substracción en punto-flotante son hechos usando métodos análogos a como se ejecutan cálculos usando lápiz y papel. La primer cosa que se hace es expresar ambos operandos en la misma potencia exponencial, luego sumar los números, preservando el exponente en la suma. Si el exponente requiere ajuste, se hace así al final del cálculo. 95 Punto Flotante Ejemplo; Encontrar la suma de 12 10 y 1.25 10 usando el modelo de punto-flotante de 14-bit. Se encuentra que: 12 10 = 1100 = 0.1100 x 2 4 1.25 10 = 1.01 = 0.101 x 2 1 = 0.000101 x 2 4 (se desnormaliza el segundo operando en este caso) el exponente polarizado es: 4 + 16 = 20 = 10100 2 Así, la suma es 0.110101 x 2 4 96 48

Punto Flotante Multiplicación en punto-flotante es también llevada a cabo en una manera semejante a como se ejecuta la multiplicación usando lápiz y papel. Se multiplican los 2 operandos y se suman sus exponentes. Si el exponente requiere ajuste, se hace de esa manera al final del cálculo. 97 Punto Flotante Ejemplo: Encontrar el producto de 12 10 y 1.25 10 usando el modelo de punto flotante de 14-bit Se encuentra que: 12 10 = 0.1100 x 2 4, exponente: 4 + 16 = 20 = 10100 2 1.25 10 = 0.101 x 2 1, exponente: 1 + 16 = 17 = 10001 2 Así, el producto es 0.0111100 x 2 5 = 0.1111 x 2 4 El producto normalizado requiere un exponente de 20 10 = 10110 2, 21 10 = 10101 2 98 49

Punto Flotante No importa cuantos bits se use en una representación de punto-flotante, el modelo tiene que ser finito. El sistema de números reales es, por supuesto, infinito, así los modelos pueden dar nada mas que una aproximación de un valor real. En algún punto, cada modelo se estropea, introduciendo errores dentro los cálculos. Con usar un mayor número de bits en el modelo, se puede reducir estos errores, pero nunca se puede totalmente eliminarlos. 99 Punto Flotante El trabajo se vuelve a uno de reducir error, o al menos de ser consciente de la posible magnitud del error en los cálculos. Se tiene también que ser consciente que los errores pueden compound a través de operaciones aritméticas repetitivas. Por ejemplo, el modelo de 14-bit no puede exactamente representar el valor decimal 128.5. En binario, 128.5 es de 9 bits de ancho: normalizando es 128.5 10 = 10000000.1 2 = 0.100000001 x 2 8 Modelo de 14-bit: signo de 1-bit, exponente de 5-bit, significando de 8-bit. 100 50

Punto Flotante Cuando se intenta expresar 128.5 10 en el modelo de 14-bit, se pierde el bit de bajo-orden, dando un error relativo de: 128.5 128 0.39% 128 Si se tuviera un procedimiento que repetidamente agregase 0.5 a 128.5, se podría tener un error de casi 2% después de solo 4 iteraciones. 101 Punto Flotante Errores de punto-flotante pueden ser reducidos cuando se usa operandos que son similares en magnitud. Si se estuviera repetidamente agregando 0.5 a 128.5, habría sido mejor iterativamente agregar 0.5 a si mismo y luego sumar 128.5 a esta suma. En este ejemplo, el error fue causado por la pérdida del bit de bajo-orden. La pérdida del bit de alto-orden es mas problemática. 102 51

Punto Flotante Propagación del error: 103 Punto Flotante Overflow y underflow en punto-flotante pueden causar que los programas "se caigan". Overflow ocurre cuando no hay espacio para almacenar los bits de alto-orden resultantes de un cálculo. Underflow ocurre cuando un valor es demasiado pequeño para almacenar, posiblemente resultante en división por cero. Experimentados programadores saben que es mejor para un programa "caerse" que tener que producir incorrectos, pero plausibles resultados. 104 52

Códigos de caracteres Cálculos no son útiles hasta que sus resultados pueden ser displayados en una manera que es significativa a las personas. También se necesita almacenar los resultados de los cálculos, y proveer un medio para la entrada de data. Así, caracteres entendibles por el humano deben/tienen que ser convertidos a patrones de bit entendibles por el computador usando alguna clase/especie de esquema de codificación de caracteres. 105 Códigos de caracteres A medida que las computadoras han evolucionado, los códigos de caracteres han evolucionado. Memorias de computador y dispositivos de almacenamiento mas grandes permiten códigos de caracteres mas ricos. Los primerísimos sistemas de codificación de computadora usaban 6 bits. El Decimal Codificado Binario (BCD) fue uno de estos primeros códigos. Fue usado por mainframes IBM en los 1950s y 1960s. 106 53

Códigos de caracteres La tabla representa los dígitos decimales de 0 a 9 en varios sistemas BCD: 107 Códigos de caracteres Para codificar en BCD un número decimal usando la codificación común, cada digito es codificado usando el patrón de 4-bit. Ejemplo: El número 127 sería: 0001 0010 0111 108 54

Códigos de caracteres En 1964, BCD fue extendido a un código de 8-bit, Extended Binary-Coded Decimal Interchange Code (EBCDIC). EBCDIC fue uno de los primeros códigos de computador ampliamente usados que soportaban caracteres alfabéticos en mayúscula y minúscula, además de caracteres especiales, tal como caracteres de puntuación y de control. EBCDIC y BCD están todavía en uso por IBM mainframes hoy en día. 109 Códigos de caracteres Otros fabricantes de computadoras eligieron el ASCII de 7-bit (American Standard Code for Information Interchange) como un reemplazo para códigos de 6-bit. Mientras que BCD y EBCDIC estuvieron basados en códigos de tarjeta perforada, ASCII estaba basado en códigos de telecomunicaciones (Telex). Hasta hace poco, ASCII era el código de caracteres dominante fuera del mundo del mainframe IBM. 110 55

Códigos de caracteres Muchos de los sistemas de hoy en día abrazan Unicode, un sistema de 16-bit que puede codificar los caracteres de cada lenguaje en el mundo. El lenguaje de programación Java, y algunos sistemas operativos ahora usan Unicode como su código de caracteres por defecto. El espacio de código Unicode está dividido en 6 partes. La primera parte es para códigos de alfabeto occidentales, incluyendo Inglés, Griego y Ruso. 111 Códigos de caracteres La asignación del espacio de código Unicode es mostrado a la derecha. Los caracteres Unicode mas bajo numerados comprenden el código ASCII. Los más altos proveen códigos definidos por el usuario. 112 56