Unidad I - Representación de Datos-1 PDF
Unidad I - Representación de Datos-1 PDF
Los datos se presentan de diferentes maneras, por ejemplo números, texto, imágenes, audio y video . La gente necesita
procesar todos estos tipos de datos.
Definición de Bit
• Codifica información:
• 1 bit: 0 ó 1
• 2 bits: 00, 01, 10 ó 11
•…
1 0
True False
2
Componentes de un Sistema de Cómputo
Bit
Con un bit podemos representar solamente dos valores,
que suelen representarse como 0, 1.
Para representar o codificar más información en un
dispositivo digital, necesitamos una mayor cantidad de
bits. Si usamos dos bits, tendremos cuatro
combinaciones posibles:
1 bit: 0 ó 1
2 bits: 00, 01, 10 ó 11
Ejemplo
Tabla 2: Bit
0 0 - Los dos están "apagados"
0 1 - El primero (de derecha a izquierda) está
"encendido" y el segundo"apagado"
1 0 - El primero (de derecha a izquierda) está
"apagado" y el segundo "encendido"
1 1 - Los dos están "encendidos"
En general:
Con un número n de bits pueden representarse hasta
2n valores diferentes.
Número de símbolos y longitud de un patrón de bits
8
Sistemas de numeración
Ejemplos:
– BC9216) = 11x163 + 12x162 + 9x161 + 2x160 =
4827410)
– 101100.112) = 1x25 + 1x23 + 1x22 + 1x2-1 + 1x2-2 =
32 + 8 + 4 + 0,5 + 0,25 = 44,7510)
Conversión Decimal a Binario
Método de suma de pesos
Pesos binarios
256 128 64 32 16 8 4 2 1
357 = 256 + 64 + 32 + 4 + 1 101100101
Pesos binarios
1024 512 256 128 64 32 16 8 4 2 1
1937 = 1024 + 512 + 256 + 128 + 16 + 1 11110010001
Método de las divisiones sucesivas
por 2 (fundamentos)
Dividendo Divisor* Cociente Re sto
12 8 12 8 *1 4 o bien 12 1 * 81 4 * 8 0
4 1
92 8 92 8 *11 4 como 11 8 *1 3
4 11 8 Sustituyendo, se puede decir que
3 1 92 8 * (8 *1 3) 4 o bien
92=1*82 + 3*81 + 4*80
Método de las divisiones sucesivas
por 2 (ejemplos)
19 2 45 2
1 9 2 1 22 2
1 4 2 0 11 2
0 2 2 1 5 2
0 1 1 2 2
1910) =100112) 0 1
4510) = 1011012)
La operación finaliza cuando el cociente es menor
que la base, en nuestro caso, menor que 2.
Se toma el último cociente y los restos en orden
contrario a como han ido apareciendo
Conversión de fracciones
decimales a binario
Método de suma de pesos
Pesos binarios
64 32 16 8 4 2 1 .5 .25 .125 .0625
95.687510) = 64 + 16 + 8 + 4 + 2 + 1 + .5 + .125 + .0625
1011111.10112)
Método de divisiones y
multiplicaciones
• División por 2 repetida de la
parte entera da el entero en
binario
• Multiplicación por 2 repetida de
la fracción da la fracción binaria
De base 10 a una base genérica a
Se divide por la base a sucesivamente, tomando
el último cociente y los restos en orden inverso
Ejemplo:
– 4827410) =BC9216)
Entre bases 2 y 2n
Tabla resumen
Representación de información alfanumérica I
(American Standart Code for Information Interchange, ASCII)
Representación de información alfanumérica II
(American Standart Code for Information Interchange, ASCII)
Componentes de un Sistema de Cómputo
30
Ejercicios
Sistema de numeración decimal
500 + 20 + 8 = 528
Sistema de numeración binario
El sistema de numeración binario utiliza sólo dos dígitos, el cero (0) y el uno (1).
En una cifra binaria, cada dígito tiene distinto valor dependiendo de la posición que ocupe. El valor de
cada posición es el de una potencia de base 2, elevada a un exponente igual a la posición del dígito
menos uno.
De acuerdo con estas reglas, el número binario 1011 tiene un valor que se calcula así:
1* 23 + 0* 22 + 1* 2n + 1* 20 , es decir:
8 + 0 + 2 + 1 = 11
y para expresar que ambas cifras describen la misma cantidad lo escribimos así:
10112 = 1110
10112 = 1110
Conversión entre números decimales y
binarios
Convertir un número decimal al sistema binario es muy sencillo: basta con realizar divisiones sucesivas por 2 y
escribir los restos obtenidos en cada división en orden inverso al que han sido obtenidos.
Por ejemplo, para convertir al sistema binario el número 7710 haremos una serie de divisiones que arrojarán los restos
siguientes:
77 : 2 = 38 Resto: 1
38 : 2 = 19 Resto: 0
19 : 2 = 9 Resto: 1
9 : 2 = 4 Resto: 1
4 : 2 = 2 Resto: 0
2 : 2 = 1 Resto: 0
1 : 2 = 0 Resto: 1
y, tomando los restos en orden inverso obtenemos la cifra binaria:
7710 = 10011012
Ejercicio
Expresa, en código binario, los números decimales siguientes: 191, 25, 67, 99, 135, 276
El tamaño de las cifras binarias
La cantidad de dígitos necesarios para representar un número en el sistema binario es mayor que
en el sistema decimal.
En el ejemplo del párrafo anterior, para representar el número 77, que en el sistema decimal está
compuesto tan sólo por dos dígitos, han hecho falta siete dígitos en binario.
Como regla general, con n dígitos binarios pueden representarse un máximo de 2n , números. El
número más grande que puede escribirse con n dígitos es una unidad menos, es decir, 2n – 1.
Con cuatro bits, por ejemplo, pueden representarse un total de 16 números, porque 24= 16 y el mayor de
dichos números es el 15, porque 24 -1 = 15.
Ejercicios
Ejercicio 2:
Averigua cuántos números pueden representarse con 8, 10, 16 y 32 bits y cuál es el
número más grande que puede escribirse en cada caso.
Ejercicio 3:
Dados dos números binarios: 01001000 y 01000100 ¿Cuál de ellos es el mayor?
¿Podrías compararlos sin necesidad de convertirlos al sistema decimal?
Sistema de numeración octal
El inconveniente de la codificación binaria es que la representación de algunos
números resulta muy larga. Por este motivo se utilizan otros sistemas de numeración
que resulten más cómodos de escribir: el sistema octal y el sistema hexadecimal.
Afortunadamente, resulta muy fácil convertir un número binario a octal o a
hexadecimal.
En el sistema de numeración octal, los números se representan mediante ocho dígitos
diferentes: 0, 1, 2, 3, 4, 5, 6 y 7. Cada dígito tiene, naturalmente, un valor distinto
dependiendo del lugar que ocupen. El valor de cada una de las posiciones viene
determinado por las potencias de base 8.
Ejemplo
Por ejemplo, el número octal 2738 tiene un valor que se
calcula así:
2* 83 + 7* 82 + 3* 81 = 2*512 + 7*64 + 3*8 = 149610
2738 = 149610
Conversión de un número decimal a
octal
La conversión de un número decimal a octal se hace con la misma técnica que ya hemos
utilizado en la conversión a binario, mediante divisiones sucesivas por 8 y colocando los
restos obtenidos en orden inverso. Por ejemplo, para escribir en octal el número decimal
12210 tendremos que hacer las siguientes divisiones:
122 : 8 = 15 Resto: 2
15 : 8 = 1 Resto: 7
1:8=0 Resto: 1
Tomando los restos obtenidos en orden inverso tendremos la cifra octal:
12210 = 1728
Ejercicio
Ejercicio 5:
Convierte los siguientes números decimales en octales: 6310, 51310, 11910
Conversión octal a decimal
La conversión de un número octal a decimal es igualmente sencilla,
conociendo el peso de cada posición en una cifra octal.
1A3F16 = 671910
Ejercicio
Ejercicio 7:
Expresa en el sistema decimal las siguientes cifras
hexadecimales: 2BC516, 10016, 1FF16
Convertir números Decimales a
hexadecimal
Por ejemplo, para convertir a hexadecimal del número 173510 será necesario hacer las siguientes divisiones:
De ahí que, tomando los restos en orden inverso, resolvemos el número en hexadecimal:
173510 = 6C716
Ejercicio
Convierte al sistema hexadecimal los siguientes números
decimales: 351910, 102410, 409510
Conversión de números binarios a
octales y viceversa
Decimal Binario Octal
Cada dígito de un número
octal se representa con tres
0 000 0
dígitos en el sistema binario. 1 001 1
Por tanto, el modo de
convertir un número entre 2 010 2
estos sistemas de 3 011 3
numeración equivale a
"expandir" cada dígito octal a 4 100 4
tres dígitos binarios, o en
"contraer" grupos de tres
5 101 5
caracteres binarios a su 6 110 6
correspondiente dígito octal
7 111 7
Ejemplo
1010010112 = 5138
Ejercicio
Ejercicio 9:
Convierte los siguientes números binarios en octales:
11011012, 1011102, 110110112, 1011010112
Conversión de números binarios a
hexadecimales y viceversa
Podemos establecer una Decimal Binario Hex
equivalencia directa 0 0000 0
entre cada dígito
hexadecimal y cuatro
dígitos binarios
15 1111 F
Ejemplo
Por ejemplo, para expresar en hexadecimal el número binario 1010011100112 bastará con tomar grupos
de cuatro bits, empezando por la derecha, y reemplazarlos por su equivalente hexadecimal:
10102 = A16
01112 = 716
00112 = 316
y, por tanto: 1010011100112 = A7316
En caso de que los dígitos binarios no formen grupos completos de cuatro dígitos, se deben añadir ceros
a la izquierda hasta completar el último grupo. Por ejemplo:
1011102 = 001011102 = 2E16
Ejercicio 11:
Convierte a hexadecimales los siguientes números binarios:
10101001010111010102, 1110000111100002, 10100001110101112
Componentes de un Sistema de Cómputo
55
Componentes de un Sistema de Cómputo
Lenguaje natural:
A= A + M[17]
56
Componentes de un Sistema de Cómputo
57
Representación de Datos
1. Texto
Una pieza de texto en cualquier idioma es una secuencia de símbolos usados para representar
una idea en ese idioma. Por ejemplo, el idioma inglés utiliza 26 símbolos (A, B, C, ..., Z) para
representar las letras mayúsculas, 26 símbolos (a, b, c,..., z) para representar las letras
minúsculas, 9 símbolos (0, 1, 2,..., 9) para los caracteres numéricos (no números; la diferencia
se verá más adelante) y símbolos (., ?, :, :..., !) para representar la puntuación. Otros símbolos
como el espacio en blanco, la línea nueva y el tabulador se usan para alineación de texto y
legibilidad.
Se puede representar cada símbolo con un patrón de bits. Dicho de otra forma, texto como
la palabra "BYTE", formada por cuatro símbolos, puede representarse como 4 patrones de
bits, en los que cada patrón define un solo símbolo.
2. Códigos
Se han diseñado diferentes secuencias de patrones de bits para representar símbolos de texto.
A cada secuencia se le conoce como código y al proceso de representar los símbolos se le llama
codificación.
Utiliza siete bits para cada símbolo. Esto significa que 128 (27) símbolos distintos pueden
definirse mediante este código.
ASCII extendido
Para hacer que el tamaño de cada patrón sea de 1 byte (8 bits), a los patrones de bits ASCII se
les aumenta un 0 más a la izquierda. Ahora cada patrón puede caber fácilmente en un byte de
memoria. En otras palabras, en ASCII extendido el primer patrón es 00000000 y el último es
01111111.
ISO
La Organización Internacional para la Estandarización (Internacional Standard Organization),
conocida como ISO, ha diseñado un código que utiliza patrones de 32 bits. Este código
representa hasta 4,294,967,296 (pow(2,32)) símbolos, definitivamente lo suficiente para
representar cualquier símbolo en el mundo actual.
EBCDIC
A principios de la era de los ordenadores, IBM desarrolló un código llamado Código extendido
de intercambio decimal codificado en binario (EBCDIC: Extended Binary Coded Decimal
Interchange Code).
Este código utiliza patrones de ocho bits, de manera que puede representar hasta 256
símbolos. Sin embargo, este código no se utiliza más que en ordenadores mainframe de IBM.
Unicode
Ninguno de los códigos anteriores representa símbolos que pertenecen a idiomas distintos al
inglés. Por eso, se requiere un código con mucha más capacidad. Una coalición de fabricantes
de hardware y software ha diseñado un código llamado Unicode que utiliza 16 bits y puede
representar hasta 65536 (pow(2,16)) símbolos.
Diferentes secciones del código se asignan a los símbolos de distintos idiomas en el mundo.
Algunas partes del código se usan para símbolos gráficos y especiales. El lenguaje Java™ utiliza
Este código para representar caracteres. Microsoft Windows usa una variación de los primeros
256 caracteres.
3. Imágenes
Cada píxel puede tener 256 valores diferentes (las 256 posibilidades combinatorias de un
byte u octeto). Este es el modo de las imágenes digitales de blanco y negro "normales".
Aunque te pueda parecer increíble, en ellas sólo se distinguen hasta 256 tonos diferentes de
gris (y no suelen aparecer todos a la vez, por cierto).
La imagen de
Una imagen de 200×200 píxeles en
20×20 píxeles escala de grises. La
(400) con 1 byte (8 información es
bits) por píxel. suficiente para
Pesará 400 × 8 reproducir
bits, es decir: fotografías en
3.200 bits. blanco y negro.
3.3. Imágenes RGB o Lab (24 bits por píxel)
Para representar imágenes a color, cada pixel coloreado se descompone en tres colores
primarios: rojo, verde y azul (RGB). Luego se mide la intensidad de cada color y se le asigna
un patrón de bits (por lo general ocho bits). En otras palabras, cada pixel tiene tres patrones
de bits: uno para representar la intensidad del color rojo, uno para la intensidad del color
verde y uno para la intensidad del color azul. Por ejemplo, la figura 2.8 muestra cuatro
patrones de bits para algunos pixeles en una imagen a color.
Los trazados (líneas curvas o rectas propias de un dibujo vectorial) se pueden modificar fácilmente, se
almacenan en muy poco espacio y además son independientes de la resolución, ya que no dependen
de una retícula dada y basándose en que cualquier operación geométrica es multiplicable o divisible en
su conjunto sin que eso afecte al aspecto del resultado, sino sólo a su tamaño final.
Las imágenes vectoriales de dos dimensiones suelen tener varias partes. Sólo el contorno y el relleno
serán visibles al imprimir. Lo demás son instrumentos de trabajo. La base de estas operaciones son las
llamadas "Curvas Bezier":
• Trazado • Puntos de control o anclaje
4. Video
El video es una representación de imágenes (llamadas cuadros o frames) en el tiempo. Una película es
una serie de cuadros desplegados uno tras otro para crear la ilusión de movimiento. Así que si se sabe
cómo almacenar una imagen dentro de una ordenador, también se sabe cómo almacenar un video;
cada imagen o cuadro cambia a una serie de patrones de bits y se almacena. La combinación de las
imágenes representa el video. Obsérvese que el video actual se comprime normalmente.
5. Notación Hexadecimal
El patrón de bits se diseñó para representar datos cuando éstos se almacenan dentro
de un ordenador. Sin embargo, para la gente es difícil manipular los patrones de bits.
Escribir una serie de números 0 y 1 es tedioso y propenso al error. La notación
hexadecimal ayuda.
La notación hexadecimal se basa en 16 (hexadec es la palabra griega para 16). Esto
significa que hay 16 símbolos (dígitos hexadecimales): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C,
D, E y F. La importancia de la notación hexadecimal se hace evidente cuando se
convierte un patrón de bits a notación hexadecimal.
Cada dígito hexadecimal puede representar cuatro bits y cuatro bits pueden
representarse mediante un dígito hexadecimal.
La tabla siguiente, muestra la relación entre un patrón de bits y un dígito hexadecimal.
Solución
Cada grupo de cuatro bits se traduce a un dígito hexadecimal. El equivalente es xCE2.
Ejemplo 2
Determine el hexadecimal equivalente del patrón de bits 0011100010.
Solución
El patrón de bits se divide en grupos de cuatro bits (a partir de la derecha). En este caso,
se añaden dos 0 más a la izquierda para hacer el número total de bits divisible entre
cuatro. Así que usted tiene 000011100010, lo cual se traduce a x0E2.
Ejemplo 3
¿Cuál es el patrón de bits para x24C?
Solución
Otra notación usada para agrupar patrones de bits es la notación octal. La notación octal se
basa en 8 (oct es la palabra griega para ocho). Esto significa que existen ocho símbolos
(dígitos octales): 0, 1, 2, 3, 4, 5, 6, 7. La importancia de la notación octal se hace evidente a
medida que se aprende a convertir un patrón de bits en notación octal.
Cada dígito octal representa tres bits y tres bits pueden representarse mediante un dígito
octal. La siguiente tabla, muestra la relación entre un patrón de bits y un dígito octal.
Un patrón de tres bits puede representarse por medio de un dígito octal y viceversa.
Obsérvese que la notación octal también se escribe en dos formatos. En el primer formato,
se añade 0 (cero) antes de los dígitos para mostrar que la representación está en notación
octal (a veces se utiliza una o minúscula). Por ejemplo, 0634 representa un valor octal en
esta convención. En el otro formato, usted indica la base del número (8) como el subíndice
después de la notación. Por ejemplo, 6348 muestra el mismo valor en la segunda
convención.
Ejemplo 4
Solución
Cada grupo de tres bits se traduce a un dígito octal. El equivalente es 0562, o562 o 5628.
Ejemplo 5
Solución
El patrón de bits se divide en grupos de tres bits (a partir de la derecha). En este caso, se
añaden dos 0 más a la izquierda para hacer el número total de bits divisible entre 3. Así que
usted tiene 001100010, lo cual se traduce a 0142, ol42 o 1428.
Ejemplo 6
Solución
Cada dígito octal se escribe como su patrón de bits equivalente para obtener 010100.
7. Representación de números
En las secciones previas mostramos cómo el texto, el audio, las imágenes y el video pueden representar- se en
un ordenador mediante patrones de bits. Pospusimos el análisis de la representación de los números porque
ésta es muy diferente de la representación de los datos no numéricos. Algunas de las razones de esta diferencia
son las siguientes:
• Un código de caracteres como el ASCII no es eficiente para representar números. ASCII puede re-
presentar 128 símbolos, pero el sistema decimal necesita sólo 10. (Obsérvese que si se consideran
otros símbolos como +, — y el punto decimal, se necesitan aún más símbolos, pero todavía menos
que 128.) Por ejemplo, si usted quiere almacenar el número 65535 usando ASCII, necesita cinco
bytes (un byte para cada dígito). Pero si el número se representa como un entero sin signo (usted verá
esta representación posteriormente en esta sección), sólo necesita dos bytes.
• Las operaciones con los números (por ejemplo, la suma y la resta) son muy complicadas si los
dígitos de un número se representan en un código de caracteres.
• La representación de la precisión de un número (por ejemplo, el número de lugares después del
punto decimal) requiere muchos bytes. Por ejemplo, para almacenar 23454.00001 se requieren 11
bytes, pero si el mismo número se representa en un punto flotante (esta representación se verá más
adelante en este tema), necesita sólo unos cuantos bytes.
8. Decimal y binario
Dos sistemas de numeración predominan actualmente en el mundo de la computación: decimal
y binario. Analizaremos estos dos tipos distintos de sistemas antes de presentar cómo se
representan los números mediante una ordenador.
8.1. Sistema decimal
Hoy día, el mundo utiliza el sistema decimal para los números desarrollado por matemáticos
árabes en el siglo VIII. Los primeros en usar un sistema numérico decimal fueron los antiguos
egipcios. Los babilonios mejoraron el sistema egipcio al dar un significado a las posiciones del
sistema numérico. Todos comprendemos fácilmente el sistema numérico decimal.
De hecho lo hemos usado tanto que es básicamente intuitivo. Pero, ¿realmente entendemos
por qué la segunda posición en el sistema decimal representa las decenas y la tercera, las
centenas? La respuesta yace en las potencias de la base del sistema, que es 10 en el sistema
decimal. De esta manera la primera posición es 10 elevado a la potencia 0, la segunda posición
es 10 elevado a la potencia 1 y la tercera posición es 10 elevado a la potencia 2.
La siguiente figura muestra la relación entre las potencias y el número 243.
Figura:. Sistema decimal
8.2. Sistema binario
Mientras que el sistema decimal se basa en 10, el sistema binario se basa en 2. Sólo hay
dos dígitos en el sistema binario, 0 y 1. La figura 2.13 muestra los valores posicionales
para un sistema binario y el dígito 243 en binario. En la tabla de posiciones, cada
posición es el doble de la posición anterior. De nuevo, esto se debe a que la base del
sistema es 2. Las potencias binarias deben memorizarse cuando menos hasta 210.
Solución
Se escriben los bits y sus valores posicionales. Se multiplica el bit por su valor
correspondiente y luego se anota el resultado. Al final, los resultados se suman para
obtener el número decimal.
Binario 1 0 0 1 1
Valores 16 8 4 2 1
posicionales -----------------------------------------
16 + 0 + 0 + 2 + 1
Decimal 19
9.2. Conversión de decimal a binario
Para convertir del sistema decimal al binario utilice la división repetitiva. El número
original, 45 en el ejemplo, se divide por 2. El residuo (1) se vuelve el primer dígito binario
y el segundo dígito se obtiene dividiendo el cociente (22) por 2 para determinar la
siguiente posición. Este proceso continúa hasta que el cociente es 0. La conversión de
decimal a binario se muestra en la figura siguiente.
Un entero sin signo es un entero que no tiene intervalo, su rango está entre 0 y el infinito
positivo. No obstante, como no hay manera de que una ordenador represente a todos los
enteros en este intervalo, la mayoría de los ordenadores define una constante llamada el
entero máximo sin signo. Un entero sin signo varía entre 0 y esta constante. El entero
máximo sin signo depende del número de bits que el ordenador asigna para almacenar un
entero sin signo. A continuación se define el intervalo de los enteros sin
signo en una ordenador, donde N es el número de bits asignado para representar un entero
sin signo:
N
Intervalo: 0 ... (2 - 1)
Ejemplo 3
Almacene 7 en un registro de memoria de ocho bits.
Solución
Primero se cambia el número a binario: 111. Se añaden cinco 0 para hacer un total de N (8)
bits: 00000111. El número se almacena en la memoria.
Ejemplo 4
Almacene 258 en un registro de la memoria de 16 bits.
Solución
Primero se cambia el número a binario: 100000010. Se añaden siete 0 para hacer un total
de N (16) bits: 0000000100000010. El número se almacena en la localidad de la memoria.
La siguiente tabla muestra cómo se almacenan los enteros no asignados en dos
ordenadores diferentes: una usa registros de ocho bits y la otra usa registros de 16 bits.
Observe que los números decimales 258 y 24760 no pueden almacenarse en una
ordenador que use registros de ocho bits para un entero sin signo. El número decimal
1245678 no puede almacenarse en ninguna de estos dos ordenadores; a esta condición se
le llama desbordamiento.
Decimal Localidad de 8 bits Localidad de 16 bits
7 00000111 0000000000000111
Interpretación
¿Cómo se interpreta una representación binaria sin signo en decimal? El proceso es
simple. Cambie los N bits del sistema binario al sistema decimal.
Ejemplo 5
Interprete 00101011 en decimal si el número se almacenó como un entero sin signo.
Solución
Usando el procedimiento mostrado en la figura anterior, el número decimal es 43.
Desbordamiento
Si se intenta almacenar un entero sin signo como 256 en un registro de memoria de ocho bits, se obtiene una
condición llamada desbordamiento (overflow).
Aplicaciones
La representación de enteros sin signo puede mejorar la eficiencia del almacenamiento debido a que usted no
necesita almacenar el signo de un entero. Esto significa que el registro de bits del entero puede utilizarse para
almacenar el número. La representación de enteros sin signo puede usarse siempre que no se necesiten los
enteros negativos. En seguida se listan algunos casos:
• Conteo. Cuando se cuenta, no se necesitan los números negativos. Usted comienza contando a partir de 1 (a
veces de 0) y continúa.
• Direccionamiento. Algunos lenguajes de computación almacenan la dirección de un registro de memoria dentro
de otro registro de memoria. Las direcciones son números positivos que comienzan a partir de 0 (el primer byte
de memoria) y continúan hasta un número que representa la capacidad de memoria total en bytes. De nuevo, no
se necesitan números negativos. Los enteros sin signo pueden hacer el trabajo fácilmente.
Ejemplos de:
Representación de la información
Números de precisión finita
102
Números de precisión finita
103
Números de precisión finita
Limitaciones
– Desbordamiento (overflow): El resultado de una operación es mayor que el
máximo número representable con una determinada precisión p
– Agotamiento o subdesbordamiento (underflow): El resultado de una operación es
menor que el mínimo representable con una precisión p
– Errores de redondeo: El resultado de una operación no es representable con la
precisión utilizada. Hay que aproximar al número más cercano posible.
104
Números de precisión finita
105
Números de precisión finita
Por lo tanto:
– El uso de números de precisión finita limita la aritmética de los
ordenadores
– Hay que tener en cuenta la posible aparición de errores
– Hay que idear recursos para trabajar con números negativos y
números reales
106
Sistemas de numeración
Punto decimal
107
Sistemas de numeración
Valor de un número en base b
Sea el número:
… d4d3d2d1d0,d-1 … / di D = 0, 1, 2, …, B-2, B-1
108
Sistemas de numeración
Sistemas más frecuentes
109
Sistemas de numeración
Sistemas más frecuentes
Decimal:
– B = 10
– D = {0,1,2,3,4,5,6,7,8,9}
– Ejemplo
459,2 10 = 4·102 + 5·101 + 9·100 + 2·10-1 = 459,2 10
-459,2 10 = -1 * (4·102 + 5·101 + 9·100 + 2·10-1) = -459,2 10
Binario:
– B=2
– D = {0,1}
– Ejemplo
101,12 = 1·22 + 0·21 + 1·20 + 1·2-1 = 5,5 10
-101,12 = -1 * (1·22 + 0·21 + 1·20 + 1·2-1) = -5,5 10
110
Sistemas de numeración
Sistemas más frecuentes (2)
Octal:
– B=8
– D = {0,1,2,3,4,5,6,7}
– Ejemplo:
453,2 8 = 4·82 + 5·81 + 3·80 + 2·8-1 = 299,2510
-453,2 8 = -1 * (4·82 + 5·81 + 3·80 + 2·8-1) = -299,2510
Hexadecimal:
– B = 16
– D = {0,1,2,3,4,5,6,7,8,9,A, B, C, D, E, F}
– Ejemplo:
1BA,F H = 1·162 + 11·161 + 10·160 + 15·16-1 = 442,937510
-1BA,F H = -1 * (1·162 + 11·161 + 10·160 + 15·16-1) = -442,937510
111
Sistemas de numeración
Ejemplo
112
Sistemas de numeración
Cambio de base
Decimal Hexadecimal
Principio de la base
B y tomar residuos
113
Sistemas de numeración
Cambio de base
– Ejemplos: di Bi
7CDH = 7·162 + C·161 + D·160 =
= 7·256 + 12·16 + 13 =
= 199710
114
Sistemas de numeración
Cambio de base
– 111012 =
= 1·24 + 1·23 + 1·22+ 0·21+ 1·20 =
= 24 + 23 + 22 + 1 =
= 16 + 8 + 4 + 1 = 2910
– 3718 =
= 3·82 + 7·81 + 1·80 =
= 3·64 + 7·8 + 1= 24910
115
Sistemas de numeración
Cambio de base
116
Sistemas de numeración
Cambio de base
118
Sistemas de numeración
Cambio de base
119
Sistemas de numeración
Cambio de base
120
Sistemas de numeración
Cambio de base
29,710 11101,10112
121
Representación números enteros
Binario natural
– Con p bits, Rango = [0, 2p-1]
0 2p -1
- +
Rango
– Ejemplo:
Con p= 3 bits, rango = [0, 23-1] = [0,7]
– Problema: No permite representar números negativos.
122
Representación números enteros
123
Representación números enteros
Signo magnitud
1. Bit más a la izquierda: bit de signo
0 para + y 1 para -
2. Resto de bits: valor absoluto
Ejemplos:
1101s-m = -510
124
Representación números enteros
Signo magnitud
– Rango con p bits = [- (2p-1-1), 2p-1-1]
Ejemplo
Con p=5, rango = [-(25-1-1), 25-1-1] = [-15, 15]
- +
Rango
125
Representación números enteros
Complemento a 1
– Los números positivos se expresan igual que en binario natural.
– Para hacer los negativos se toma el correspondiente positivo y se
cambian los ceros por unos y viceversa
– Para todas las cantidades representadas, el bit de la izquierda vale
0 para el + y 1 para el -
126
Representación números enteros
Complemento a 1
– Rango con p bits = [-(2p-1-1), 2p-1-1]
Ejemplo
– Con p=5, rango = [-(25-1-1), 25-1-1] = [-15, 15]
- +
Rango
127
Representación números enteros
Complemento a 2
– Los números positivos se representan en
binario natural
– Para representar un número negativo, se hace
el complemento a 1 y se suma 1 (en binario)
– El bit de la izquierda vale 0 para los números
positivos y 1 para los negativos
128
Representación números enteros
Complemento a 2
– Rango con p bits = [-2p-1, 2p-1-1]
– Ejemplo:
– Con p= 5, rango = [-24, 24-1] = [-16, 15]
- 2p-1 0 2p-1 -1
- +
Rango
129
Representación números enteros
Ejemplos: Decimal a complemento a 2 (p=5 bits)
- 1010 = C1 (01010) = 10101 + 1 = 10110c2
10 10 = 01010c2
Ejemplos: Complemento a 2 a decimal (p=5 bits)
00111c2 Empieza por 0 es positivo se interpreta en binario
natural
Resultado: 00111c2 = 710
130
Representación números enteros
Exceso a N
– El sistema guarda el valor más N, de forma que el número
resultante es siempre positivo
– Normalmente, si tenemos precisión p: N = 2p-1
– Rango = -2p-1, 2p-1 -1
– Ejemplo: exceso a 128 (27)
–310 -3+128= 12510 (= 011111012)
131
Representación números enteros
133
Representación IEEE 754
Representación normalizada.
Base: 2 (no se representa)
N = ± M · 2e
Sólo es necesario representar el signo, la mantisa y el
exponente
134
Representación IEEE 754
Se representa:
– Un campo de signo que ocupa 1 bit
– Un campo de exponente (c) que ocupa nc bits
– Un campo de mantisa (m’) que ocupa nm bits
s c m'
1 nc nm
135
Representación IEEE 754
Signo:
– 0 para + y 1 para -
Exponente:
– En exceso a N = 2 p-1-1, con p = número de dígitos reservados para
el exponente. El valor almacenado se denomina característica
(c=e+N)
136
Representación IEEE 754
Mantisa:
1. Se normaliza el número: El exponente se ajusta de forma tal que el
1 más significativo de la mantisa se encuentre en la posición 0
(posición de las unidades)
2. El campo de la mantisa (m’) se obtiene almacenando sólo la parte
fraccionaria del número normalizado. Es decir, no se almacena la
información "1.”
Ejemplo: N = 1101.01 = 1.10101·23 m’ = 10101
137
Representación IEEE 754
Dos formatos:
– Precisión simple (SP) y doble (DP)
Precisión simple: palabra de 32 dígitos
– ns = 1 bits
– nc= 8 bits
– nm’= 23 bits
s c m'
1 8 23
138
Representación IEEE 754
s c m'
1 11 52
139
Representación IEEE 754
Casos especiales:
– Si c=111...1
Si m’ = 0 + ó -
Si m’ <> 0 caracteres especiales
– Si c=0000...0. Excepción doble:
Mantisa es 0.M’
Exponente: exceso N = 2p-1 - 2
140
Representación IEEE 754
141
Representación IEEE 754
142
Representación IEEE 754
Dificultades al obtener:
– resultados intermedios, de números
excesivamente pequeños. Puede ocurrir al
restar dos números casi iguales o al dividir si el
divisor es mucho mayor que el dividendo. En
estos casos puede perderse la precisión de los
cálculos o producirse un desbordamiento a cero.
– resultados numéricos excesivamente grandes,
es decir por desbordamiento. Por ejemplo, al
dividir un número por otro mucho menor que él o
al efectuar sumas o productos sucesivos con
143 números muy elevados.
Representación IEEE 754
145
Códigos alfanuméricos
146
Códigos alfanuméricos
Código ASCII
147
Códigos alfanuméricos
148
Códigos alfanuméricos
150