14
Curso de Arquitectura de Computadores. Óscar Carrasco Vera. 2. SEGUNDA PARTE: Representación de Datos. En este capítulo se estudiará la forma de representar los datos en una computadora. Pero antes, es necesario conocer y manejar los diferentes sistemas numéricos y cómo operar con ellos. 2.1. Sistemas Numéricos. Cualquier valor que represente una cantidad puede escribirse en binario o en cualquier otro sistema numérico y viceversa, porque el concepto de cantidad es independiente de su representación. A continuación se explica los métodos que permiten transformar un número cualquiera en cualquier base a otra base numérica. 2.1.1. De Base 10 a Base n Se siguen 2 métodos distintos: uno para la parte entera y otro para la parte fraccionaria. 1. Parte Entera: El método consiste en divisiones enteras sucesivas hasta que el resultado de la división sea igual a cero. Cada división arroja un resultado y un residuo, el resultado de la división pasa a ser la nueva cifra a ser dividida y el residuo pasa a ser un dígito más del número transformado. Al resultado final se le deben invertir los dígitos. Parte Entera División Resultado Entero Residuo 783 : 2 = 391 1 391 : 2 = 195 1 195 : 2 = 97 1 97 : 2 = 48 1 48 : 2 = 24 0 24 : 2 = 12 0 12 : 2 = 6 0 6:2 = 3 0 3:2 = 1 1 1:2 = 0 1 Solución : 1100001111 2 edit by ~KaKo~

Curso de arquitectura de computadores 2010

Embed Size (px)

Citation preview

Curso de Arquitectura de Computadores.

Óscar Carrasco Vera.

2. SEGUNDA PARTE: Representación de Datos.

En este capítulo se estudiará la forma de representar los datos en una computadora. Pero antes, es necesario conocer y manejar los diferentes sistemas numéricos y cómo operar con ellos.

2.1. Sistemas Numéricos.

Cualquier valor que represente una cantidad puede escribirse en binario o en cualquier otro sistema numérico y viceversa, porque el concepto de cantidad es independiente de su representación. A continuación se explica los métodos que permiten transformar un número cualquiera en cualquier base a otra base numérica.

2.1.1. De Base 10 a Base n

Se siguen 2 métodos distintos: uno para la parte entera y otro para la parte fraccionaria.

1. Parte Entera:

El método consiste en divisiones enteras sucesivas hasta que el resultado de la división sea igual a cero. Cada división arroja un resultado y un residuo, el resultado de la división pasa a ser la nueva cifra a ser dividida y el residuo pasa a ser un dígito más del número transformado. Al resultado final se le deben invertir los dígitos.

Parte Entera División Resultado

Entero Residuo

783 : 2 = 391 1 391 : 2 = 195 1 195 : 2 = 97 1

97 : 2 = 48 1 48 : 2 = 24 0 24 : 2 = 12 0 12 : 2 = 6 0

6:2 = 3 0 3:2 = 1 1 1:2 = 0 1 Solución : 11000011112

edit by ~KaKo~

Curso de Arquitectura de Computadores.

Óscar Carrasco Vera.

2. Parte Fraccionaria:

El método consiste en multiplicaciones sucesivas de las partes fraccionarias resultantes, comenzando por la parte fraccionaria del número original. El proceso se repite hasta la cantidad de dígitos fraccionarios se desee obtener.

1. La parte fraccionaria se expresa como 0,… (ejemplo: 783,83 => 0,83) 2. Se multiplica por la base a la cual se va a cambiar. 3. Del resultado anterior, se separa la parte entera (dígito fraccionario resultante) de la

fraccionaria, ésta se expresa como 0,… para la siguiente multiplicación. 4. Volver al punto 2 tantas veces como dígitos fraccionarios se desee obtener.

Parte Fraccionaria Multiplicación Resultado Parte Entera

0,83 x 2 = 1,66 1 0,66 x 2 = 1,32 1 0,32 x 2 = 0,64 0 0,64 x 2 = 1,28 1

Solución : 0,11012

El resultado final se suma: 11000011112 + 0,11012 = 1100001111,11012

Los siguientes ejemplos muestran cómo se traspasa el número 783,83 en base 10 a base 8 y 16, respectivamente.

Ejemplo 1: 783,8310 a X8 Parte Entera Parte Fraccionaria

División Resultado Entero

Residuo Multiplicación Resultado Parte Entera

783 : 8 = 97 7 0,83 x 8 = 6,64 6 97 : 8 = 12 1 0,64 x 8 = 5,12 5 12 : 8 = 1 4 0,12 x 8 = 0,96 0

1 : 8 = 0 1 0,96 x 8 = 7,68 7 Solución : 1417,65078

Ejemplo 2: 783,8310 a X16 Parte Entera Parte Fraccionaria

División Resultado Entero

Residuo Multiplicación Resultado Parte Entera

783 : 16 = 48 15 (F) 0,83 x 16 = 13,28 13 (D) 48 : 16 = 3 0 0,28 x 16 = 4,48 4

3 : 16 = 0 3 0,48 x 16 = 7,68 7 0,68 x 16 = 10,88 10 (A)

Solución : 30F,D47A16

Curso de Arquitectura de Computadores.

Óscar Carrasco Vera.

2.1.2. De Base n a Base 10

El método consiste en sumar la multiplicación de cada dígito por la base de origen elevado a la posición del dígito del número a trasformar.

a) Parte Entera: Cada dígito se multiplica por la base en que se encuentra el número (n) elevada a la posición del dígito (partiendo de cero) desde la derecha al lado de la coma. Cada resultado es acumulado formando la parte entera de la nueva representación.

b) Parte Fraccionaria: Cada dígito se multiplica por la base en que se encuentra el número (n) elevada a la posición del dígito (partiendo de -1) desde la izquierda al lado de la coma. Cada resultado es acumulado formando la parte fraccionaria de la nueva representación. El resultado queda expresado como 0,…

El resultado final será la suma de los dos resultados parciales. A continuación se muestra un esquema del proceso:

D D D D D , D D D D

… n3 n2 n1 n0 n-1 n-2 n-3 … n D * n-3 = X D * n-2 = X D * n-1 = X

+ Suma2 D * n0 = X D * n1 = X D * n2 = X D * n3 = X

+ Suma1

Resultado = Suma1 + Suma2

Curso de Arquitectura de Computadores.

Óscar Carrasco Vera.

EJEMPLO 1: 1100001111,11012 a X10

a) Parte Entera: 11000011112 a X10

1 1 0 0 0 0 1 1 1 1

2 1 X 20 = 1 1 X 21 = 2 1 X 22 = 4 1 X 23 = 8 0 X 24 = 0 0 X 25 = 0 0 X 26 = 0 0 X 27 = 0 1 X 28 = 256 1 x 29 = 512

Solución : + 78310

b) Parte Fraccionaria: 11012 a X10

1 1 0 1

2 1 X 2-4 = 0,0625 1/16 0 X 2-3 = 0 1/8 1 X 2-2 = 0,25 1/4 1 X 2-1 = 0,5 ½

Solución: + 0,812510 Solución Aproximada: 0,8310

c) Solución Final: 1100001111,11012 = 783,8310

Curso de Arquitectura de Computadores.

Óscar Carrasco Vera.

EJEMPLO 2: 1417,70568 a X10

a) Parte Entera: 14178 a X10

1 4 1 7

8 7 X 80 = 7 1 X 81 = 8 4 X 82 = 256 1 X 83 = 512

Solución : + 783 10

b) Parte Fraccionaria: 65078 a X10

6 5 0 7

8 7 X 8-4 = 0,001708984375 1/4096 0 X 8-3 = 0 1/512 5 X 8-2 = 0,078125 1/64 6 X 8-1 = 0,75 1/8

Solución : + 0,82983398437510 Solución Aproximada: 0,8310

c) Solución Final: 1417,70568 = 783,8310

Curso de Arquitectura de Computadores.

Óscar Carrasco Vera.

EJEMPLO 3: 30F,D47A16 a X10

a) Parte Entera: 30F16 a X10

3 0 F

16 15 X 160 = 15 0 X 161 = 0 3 X 162 = 768

Solución : + 78310

b) Parte Fraccionaria: D47A16 a X10

D 4 7 A

16 10 X 16-4 = 0,000152587890625 1/65536 7 X 16-3 = 0,001708984375 1/4096 4 X 16-2 = 0,015625 1/256 13 X 16-1 = 0,8125 1/16

Solución : + 0,82998657226510 Solución Aproximada: 0,8310

c) Solución Final: 30F,D47A16 = 783,8310

Curso de Arquitectura de Computadores.

Óscar Carrasco Vera.

2.1.3. Ejercicios.

0010112 a X10 = 0 * 25 + 0 * 24 + 1 * 23 + 0 * 22 + 1 * 21 + 1 * 20 0 0 8 0 2 1 = 1110

1100012 a X10 = 1 * 25 + 1 * 24 + 0 * 23 + 0 * 22 + 0 * 21 + 1 * 20 32 16 0 0 0 1 = 4910

110101,1012 a X10 = 1 * 25 + 1 * 24 + 0 * 23 + 1 * 22 + 0 * 21 + 1 * 20 32 16 0 4 0 1 = 5310 1 * 2-1 + 0 * 2-2 + 1 * 2-3 1/2 0 1/8 = 0,62510 53,62510

101,102 a X10 = 1 * 22 + 0 * 21 + 1 * 20 4 0 1 = 510 1 * 2-1 + 0 * 2-2 1/2 0 = 0,510 5,510

1,1112 a X10 = 1 * 20 1 = 110 1 * 2-1 + 1 * 2-2 + 1 * 2-3 1/2 1/4 1/8 = 0,87510 1,87510

34,0235 a X10 = 3 * 51 4 * 50 15 4 = 1910 0 * 5-1 + 2 * 5-2 + 3 * 5-3 0 0,08 0,024 = 0,10410 19,10410

Curso de Arquitectura de Computadores.

Óscar Carrasco Vera.

2.2. Aritmética Binaria.

2.2.1. Suma.

La suma es la operación aritmética básica, ya que las otras operaciones aritméticas elementales pueden describirse en términos de sumas.

La suma en una computadora siempre se define para dos operando (o cantidades a ser sumadas) solamente, porque de esta manera se tiene una reserva no mayor que 1, en cada posición. Si se desean sumar más de dos cantidades, siempre se pueden sumar las dos primeras, y al resultado sumarle la tercera cantidad, y así sucesivamente.

1 <- Residuo 1 1 0 1 1310 + 1 0 0 1 910

1 0 1 1 0 2210

Ejemplos:

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 0 1 + 1 1 0 1 + 1 1 1 1 + 1 1 0 1 + 0 0 1 1

1 1 1 0 0 1 1 1 1 0 1 1 0 0 1 1 0 0 0 0

1 1 1 10 10 1 1 1 1 1

1 0 1 0 1 0 1 1 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1 1 0 0 1 1 0 1 + 1 1 0 1 + 1 1 1 1 + 1 1 0 1 + 0 0 1 1

1 0 0 1 1 0 1 0 1 0 0 1 1 0 0 0 1 1 1 1 0 1 0

10 10 1 11 11 10 10 1 1 10 10 1

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1 1 0 0 1 1 0 1 + 1 1 0 1 + 1 1 1 1 + 1 1 0 1 + 0 0 1 1

1 1 0 1 0 1 1 1 1 1 0 0 1 1 0 0 1 0 1 0 1 0 0 1

2.2.2. Resta.

1

0

1

0

1

1

0

1

1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 0 1 - 1 1 0 1 - 1 1 1 1 - 1 1 0 1 - 0 0 1 1

0 0 1 0 0 0 0 0 1 1 1 1 1 0 1 0

Curso de Arquitectura de Computadores.

Óscar Carrasco Vera.

0

1

1

0

1

0

1

1 0 1 0 1 1 0 1 0 1 1 1 1 1 1 0 - 1 1 0 1 - 1 0 1 0 - 1 1 1 0 - 0 1 1 1

- 1 1 0 0 1 1 - 1 1 1 1 1 1

1

1

0

1

1 0 1 0 - 1 1

1 1 1

Tal como en el Sistema Decimal, cuando se realiza una resta de un número mayor por un número menor, el resultado corresponde a un número negativo (3 - 4 = -1), en el Sistema Binario se puede realizar invirtiendo las cantidades (de tal forma que quede 4 – 3) y al resultado se le da el signo negativo. Sin embargo, como se verá más adelante (Representación Numérica), el número negativo se representa aplicando un método especial.

2.2.3. Multiplicación.

La multiplicación binaria es idéntica a la decimal, además como se aprecia corresponde a un desplazamiento del multiplicando de acuerdo al multiplicador.

(13) (9) 1 1 0 1 X 1 0 0 1

1 1 0 1 0 0 0 0 0 0 0 0 + 1 1 0 1

1 1 1 0 1 0 1

(117)

Curso de Arquitectura de Computadores.

Óscar Carrasco Vera.

2.3. Representación de Datos en una Computadora.

Los datos pueden ser representados como carácter (símbolo) o como número en el caso de dígitos (cantidad). Por ejemplo, el 1 como carácter no es lo mismo que el 1 como valor.

En el caso de los datos del tipo carácter, cada símbolo es asociado a una combinación de bits. La cantidad de símbolos posibles a representar depende del largo del Byte que maneje la computadora. Por general, el largo estándar es de 8 bits. Recordemos que internamente todo es almacenado como números 1 y 0.

En el caso de valores numéricos, existen diferentes modos de representar valores. La diferencia entre ellos consiste en la optimización del uso de memoria, ya sea por modo de almacenamiento o por cantidad de bits utilizados para representar una cifra.

Existen diversos sistemas para representar caracteres y números. A continuación se muestra un diagrama que ilustra las diferentes maneras de representar datos:

ASCII Caracteres EBCDIC Punto Fijo Datos Enteros Decimal con Zona Decimal Empaquetado Numéricos Punto Flotante Corto Reales Punto Flotante Largo

Curso de Arquitectura de Computadores.

Óscar Carrasco Vera.

2.3.1. Codificación de Caracteres.

Cada uno de ellos puede ser representado a través de una combinación única de bits. Para ello se han creado varios estándares de equivalencia siendo el ASCII (ASCII-8) el adoptado por la gran mayoría de las computadoras. Un estándar es un acuerdo internacional que establece normas para ser regidas, en este caso, por las empresas constructoras de computadoras.

En las primeras computadoras, cada fabricante definía la cantidad de Bits que utilizaría para la representación de datos. Con el tiempo fue necesario crear un estándar que fijara un sistema de representación único.

Sistema Boudot.

Se contemplan 5 bits para la representación de caracteres, por lo que solamente podía representar 32 símbolos (25). Este sistema se utilizó para señales telegráficas.

Sistema BCD.

Entre los sistemas más completos para representar símbolos con bits se encontraba el BCD (Binary Coded Decimal / Decimal Codificado en Binario). IBM definió BCD para una de sus primeras computadoras. Los códigos BCD consistían de palabras o cifras de 6 bits, lo que permitía un máximo posible de 64 símbolos (26). Las computadoras BCD podían trabajar únicamente símbolos numéricos, letras mayúsculas y algunos pocos símbolos adicionales. Este sistema no duró mucho tiempo.

Sistema EBCDIC.

La necesidad de representar las minúsculas, además de las mayúsculas, requería de 52 códigos nada más que para el alfabeto completo, lo que llevo a IBM a desarrollar el sistema EBCDIC (Extended Binary Coded Decimal Interchange / Código Decimal Extendido Codificado en Binario para Intercambio).

EBCDIC es un código de 8 bits que define 256 símbolos. Todavía es utilizado en los Mainframes y sistemas de mediana escala de IBM, pero raramente encontrado en computadoras personales. Para cuando se empezaron a desarrollar las computadoras pequeñas, el American National Standards Institute (ANSI), ya había entrado en acción para definir los estándares para las computadoras.

Estándar ASCII.

La solución de la organización ANSI para representar símbolos con bits de datos fue el código de caracteres ASCII (American Standard Code for Information Interchange / Código Americano Estándar para intercambio de Información). Originalmente era un código de 8 bits, pero el octavo bit tenía un propósito especial y se llamaba Bit de Paridad, de tal manera que en realidad era un código de 7 bits que definían 128 símbolos. Más tarde, los bits de paridad dejaron de tener importancia e IBM tomó la iniciativa nuevamente y desarrolló una versión mejorada de ASCII que hacía uso del octavo bit (ASCII-8), permitiendo representas 256 símbolos. Cuando hizo esto IBM, no cambiaron ninguno de los 128 caracteres originales, lo que permitió que programas y software diseñados para trabajar con el ASCII original pudiera seguir trabajando con datos del nuevo código de caracteres.

Curso de Arquitectura de Computadores.

Óscar Carrasco Vera.

Estándar UNICODE.

Un nuevo estándar para representación de datos, llamado UNICODE, 16 bits para representar símbolos. Con 16 bits, un carácter de UNICODE podría ser uno de los 65536 (216) caracteres o símbolos diferentes, suficientes para cualquier carácter y símbolo del mundo.

2.3.2. Formatos para Valores Numéricos.

Ya vimos como cambiar de base un número y cómo realizar operaciones aritméticas con bits. Sin embargo, en la memoria de la computadora las cantidades en binario son almacenadas de acuerdo a cierto formato de representación. Estos formatos permiten hacer mejor uso del espacio de memoria de acuerdo al propósito que se tenga para con estos números.

2.3.2.1 Números Enteros.

Existen 3 formatos para representar valores enteros: Punto Fijo, Decimal con Zona y Decimal Empaquetado. En los formatos Decimal con Zona y Decimal Empaquetado, el signo es representado por el número 11002 (C16) si la cifra es positiva o 11012 (D16) si es negativa.

Formato de Punto Fijo.

Es un formato sólo sirve para representar datos enteros positivos o negativos.

Para un Entero Positivo, el número en Base 10 se transforma a Base 2 y se llena con ceros a la izquierda hasta completar la palabra.

Para un Entero Negativo, se utiliza una técnica llamada Complemento 2:

1. Obtener el valor absoluto del número. 2. Convertir la cantidad positiva a Binario. 3. Completar con ceros a la izquierda. 4. Invertir cada Bit (ceros por unos y viceversa). 5. Sumar 1 (complemento 1). 6. Para comprobar, el resultado debe comenzar con 1.

Ejemplo: Representar el –500010 en Punto Fijo para una palabra de 16 bits.

a) 500010 1 0 0 1 1 1 0 0 0 1 0 0 02 b) 0 0 0 1 0 0 1 1 1 0 0 0 1 0 0 02

c) 1 1 1 0 1 1 0 0 0 1 1 1 0 1 1 12

d) + 1

e) 1 1 1 0 1 1 0 0 0 1 1 1 1 0 0 02

Curso de Arquitectura de Computadores.

Óscar Carrasco Vera.

Formato Decimal con Zona.

Permite almacenar cantidades enteras, representando cada dígito como un carácter. No permite operar aritméticamente.

Zona Dígito Zona Dígito Zona Dígito Signo Dígito 1111 1111 1111

Ejemplo: 90310 = 38716 = 11100001112 Zona 3 Zona 8 Signo 7

1111 0011 1111 1000 1100 0111

Formato Decimal Empaquetado.

Permite almacenar cantidades enteras. Cada dígito decimal se almacena en medio byte de su codificación binaria. El signo va en la segunda mitad del primer byte. Permite operaciones aritméticas y su formato es el siguiente:

Dígito Dígito Dígito Dígito Dígito Dígito Dígito Signo

Ejemplo: 2255110 = 581716 = 1011000000101112 0 5 8 1 7 Signo

0000 0101 1000 0001 0111 1100

2.3.2.2 Números Reales.

Para números reales, existen 2 formatos: Punto Flotante Corto y Punto Flotante Largo. La diferencia entre ambas consiste en la precisión, o sea cuántos decimales puede contener. La precisión, además, depende del largo de palabra que el procesador maneje.

El método para representa un real en Punto Flotante es el siguiente:

1. Convertir la cantidad Decimal a Hexadecimal. (X10 X16)

2. Normalizar la cifra para dejarla expresada como 0,… x 16 exp, procurando que el primer dígito decimal (al lado derecho de la coma decimal) sea significativo (mayor que cero).

3. Sumar 6410 al exponente. Este resultado, o nuevo exponente, se transforma a Hexadecimal.

4. Cada dígito en hexadecimal es representado en binario ocupando ½ Byte.

5. El signo se representa con un 0 si la cantidad es positiva y un 1 si es negativa.

Curso de Arquitectura de Computadores.

Óscar Carrasco Vera.

En el formato Punto Fijo, el punto decimal está implícito entre ciertos bits. En el formato Punto Flotante, el punto decimal es supuesto (no queda registrado) ya que éste se transforma en un número que represente la posición del número decimal, en notación científica.

Ejemplo: 49010 en Punto Flotante Corto.

49010 = 1EA16 => 0,1EA x 163

116 = 00012 E16 = 11102 A16 = 10102

S Exponente F r a c c i ó n

0 100 0011 0000 0000 0000 0001 1110 1010 + 4 3 1 E A16

Punto Flotante Corto.

Este formato utiliza una precisión simple, esto es, la cantidad de dígitos a ser representados es inferior debido a la menor cantidad de bits empleados para registrar la parte fraccionaria en comparación al Punto Flotante Largo.

S Exponente F r a c c i ó n 8 Bits 24 Bits

32 Bits

Punto Flotante Largo.

Este formato aumenta la precisión (doble precisión) de un valor real, ya que posee una mayor cantidad de bits para registrar la parte fraccionaria.

S Exponente F r a c c i ó n 8 Bits 56 Bits

64 Bits