Escolar Documentos
Profissional Documentos
Cultura Documentos
1 Presentación
2 Objetivos
3 La estructura de la Memoria de un
computador.
4 Números Enteros
5 Números Reales
6 Representación de Números
7 Representación de un Numero Entero
8 Método de Complemento Doble
9 Representación de un numero real
10Conclusión
11Preguntas y Respuestas.
12Ejercicio.
Representación de números en el computador
Temas:
Un computador tiene por ejemplo 32 mega bytes de memoria (MB). Esto significa que
tiene 32*1024*1024 bytes (o 32*1024*1024*8 bits). A principios de los 80s, los PCs
tenían muy poca memoria: 64 kilo bytes (KB), es decir 64*1024 bytes. En computación
los kilos corresponden a 1024 (y no 1000) y los megas a 1024 kilos. Esto se debe a que es
más fácil construir computadores que tengan una capacidad de memoria que sea múltiplo
de 1024 o 1024*1024.
Los enteros
Una variable entera (int) está formada por 4 bytes, es decir 32 bits. Estos 32 bits
representan el valor almacenado por esa variable en binario. Por ejemplo:
Ejemplos:
• valor(000...001001) = 1*2^3+1*2^0= 9
• valor(111...111010) = - (valor(000...000101)+1) = - (5+1) = -6
Una variable entera (int) siempre utiliza 32 bits, aún cuando el número sea pequeño. Por
otra parte, no es capaz de almacenar números demasiado grandes (en valor absoluto).
Ejercicios:
Observación: usualmente se usa el tipo int para almacenar enteros, pero también existen
otros tipos que también almacenan enteros pero en menos o más bits. La siguiente tabla
muestra los tipos enteros presentes en Java:
tipo número rango
de bits representado
int 32 [-2^31,2^31-1]
short 16 [-2^15,2^15-1]
byte 8 [-2^7,2^7-1]
long 64 [-2^63,2^63-1]
Los reales
Una variable real (double) está formada por 8 bytes, es decir el doble de un entero. En
ella se almacenan números reales en formato binario. Por ejemplo, el número:
1101.1010
Los primeros computadores almacenaban los números reales en una formato llamado
punto fijo, en donde se destinaba una cantidad fija de bits para la parte entera (por
ejemplo 32 bits) y el resto a la parte fraccionaria. Por lo tanto, el número anterior sería
representado en 64 bits como:
• el signo: +
• mantisa: 10110000...
• exponente: 4
• el signo: -
• mantisa: 110010000...
• exponente: 7
Otros ejemplos:
En una variable de tipo double se destina 1 bit para el signo, 11 bits para el exponente y
52 bits para la mantisa.
La desventaja es que los números se almacenan con una precisión limitada. Esto significa
que un número que requiera 100 bits de mantisa será aproximado a uno que solo ocupa
52, introduciéndose entonces un error de representación.
El error que se comente se puede visualizar mejor en base 10. El error que comete es
como cuando el siguiente número:
1234567890123456789012345678901234567890
123456789012345*10^25
Es decir, solo se reprentan 15 dígitos de los 40 iniciales. El error absoluto que se comete
es:
6789012345678901234567890
que parece enorme, pero lo que importa es el error relativo que es ~10^(-15) que es
bajísimo y para la mayoría de las aplicaciones numéricas es insignificante. Pero es un
error que conviene tener presente.
Tarea opcional:
Muestre que el número 0.3 no es representable en forma exacta en una variable de tipo
double.
Indicación:
Aplique este mismo método para 0.3 y deduzca la forma final del número en base 2.
Para representar un número natural, una vez definido el número de bits se utilizarán para
su codificación, ordene los bits en celdas binarias (cada bit ubicado de acuerdo a su peso
binario en el orden de derecha a izquierda) y luego "llene" los bits que no se utilizan con
ceros.
Un número entero es un número completo que puede ser negativo. Por lo tanto, el
número se debe codificar de manera que se pueda distinguir si es positivo o negativo y de
forma que siga las reglas de adición. El truco consiste en utilizar un método denominado
complemento doble.
• Un número entero o ce ro se representará en base binaria (base 2) como un número natural, con la
excepción de que el bit de mayor peso (aquel que se encuentra más a la izquierda) representa el signo
más o menos. Por lo tanto, para un número entero o cero, este bit se debe establecer en 0 (lo que
corresponde al signo más, así como 1 es el signo menos). De este modo, si un número natural se
codifica utilizando 4 bits, el mayor número posible será 0111 (o 7 en base decimal).
Generalmente, el mayor número entero posible codificado utilizando n bits será 2n-1-1.
• Un número entero negati vo se codifica utilizando complementos dobles.
El principio de los complementos dobles:
Se elige un número negativo.
o Se toma su valor absoluto (su equivalente positivo)
o Se representa en base binaria utilizando n-1 bits
o Cada bit se cambia con su complemento (es decir, los ceros se reemplazan con unos y
viceversa)
o Se suma 1
Co men ta ri os:
El bit de mayor peso es 1, de manera que es, de hecho, un número negativo.
Si sumamos 5 y -5 (00000101 y 11111011) la suma da 0 (con el remanente 1).
• el signo más/menos se representa por un bit: el bit de mayor peso (aquel que se encuentra más a la
izquierda)
• el exponente se codifica utilizando 8 bits inmediatamente después del signo
• la mantisa (los bits después del punto decimal) con los 23 bits restantes
A continuación hay otro ejemplo, esta vez utilizando un número real negativo :
Se codificará el valor -0,625.