Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Representación de datos
Índice temático Unidad Nº 2 – Representación de datos
Unidad 2
Representación de datos
Esquema de contenidos
Binario
Bases de Decimal
numeración Hexadecimal
Sistemas de Conversión entre
numeración bases
Operaciones
aritméticas
n Coma Flotante
(Norma IEEE 754)
Reales
Formatos de BCD empaquetado
representación
BCD desempaquetado Longitud
Variable
ASCII
Alfanuméricos EBCDIC
UNICODE
2.1 Introducción
Básicamente, se puede decir que la computadora es una máquina que
procesa datos y que para realizar dicho procesamiento se debe tener en
cuenta cómo representar y codificar los datos internamente. Para ello es
menester conocer los procesos que transforman los datos externos a la
computadora en patrones de bits susceptibles de ser almacenados y
procesados por los elementos internos de la computadora.
Como ya se dijo en la Unidad 1, para hacer más fiable y menos
complejo el diseño de los componentes de la computadora, se utilizan dos
41
valores o estados posibles para las representaciones internas. Estos valores
conceptualmente se representan por cero (0) y uno (1) que corresponden a
dos estados posibles, por ejemplo a dos niveles de tensión eléctrica
claramente diferenciados.
En esta Unidad, se abordará la transformación de los datos “externos”
para ser representados como datos “internos” de tipo binario, los que luego
volverán a convertirse cuando los resultados se vuelquen al exterior. Se verá
en detalle el tratamiento de datos alfanuméricos y numéricos teniendo en
cuenta que el espacio de representación de las computadoras es finito, por
lo que se puede decir que no es posible representarlos a todos.
Los formatos de representación se pueden clasificar en cuatro tipos:
1. Representación de Textos: es la información usual que utilizan los
seres humanos empleando la ayuda de un alfabeto o conjunto de
caracteres. Algunos ejemplos de los códigos usados para esta
representación son: ASCII, EBCDIC y UNICODE.
2. Representación de Números: Los números necesitan una
representación adecuada para poder realizar operaciones
matemáticas, la cual está fundada en el sistema de numeración de
base 2. Serán desarrollados en esta unidad las representaciones sin
signo, signo y módulo, complemento a 1, complemento a 2, en exceso
a M, la representación en coma flotante de acuerdo a la norma IEEE
754 y el código BCD.
3. Representación de Sonidos: también denominadas señales de audio,
suelen ser de voz o música. Estas son captadas por un sensor que
transforma las señales originales en señales eléctricas analógicas, las
que finalmente son digitalizadas para poder ser tratadas por la
computadora.
4. Representación de Imágenes-Video: consiste en el tratamiento que
reciben las imágenes estáticas para poder ser representadas por una
computadora. La representación de imágenes dinámicas, tales como
las de video, suele realizarse como un conjunto sucesivo de imágenes
estáticas.
42
Estructura y Funcionamiento de Computadoras I Unidad 2 – Representación de datos
𝑏=2 𝑆2 = { 0, 1 }
𝑏=8 𝑆8 = { 0, 1, 2, 3, 4, 5, 6, 7 }
𝑏 = 10 𝑆10 = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }
𝑏 = 16 𝑆16 = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F }
43
Figura 2.2 Sistema de numeración
decimal.
832 = 8 × 𝟏𝟎𝟎 + 3 × 𝟏𝟎 + 2 × 𝟏
832 = 8 × 10𝟐 + 3 × 10𝟏 + 2 × 10𝟎
Luego, para formar el valor del número, cada dígito se multiplica por
su respectivo peso y se suman todos los productos:
44
Estructura y Funcionamiento de Computadoras I Unidad 2 – Representación de datos
(𝑛−1)
𝑉(𝑁) = ∑ 𝑑𝑖 × 𝑏 𝑖
𝑖=−𝑚
45
El valor relativo de un dígito en función de la posición que ocupa
es igual al producto 𝑑𝑖 × 𝑏 𝑖 , donde
d : valor intrínseco del dígito.
b : base del sistema de numeración.
i : orden del dígito.
Finalmente, un número queda determinado por la sumatoria de
los valores relativos (𝑑𝑖 × 𝑏 𝑖 ) de los dígitos que forman el número.
(Teorema Fundamental de la Numeración)
46
Estructura y Funcionamiento de Computadoras I Unidad 2 – Representación de datos
Figura 2.3 Método de divisiones sucesivas para convertir una cantidad entera a base b.
Figura 2.4 Conversión de decimal a binario de una cantidad entera por método de divisiones sucesivas.
47
Parte fraccionaria. Método de multiplicaciones sucesivas
Para convertir la parte fraccionaria de N10 a la base b, se aplica el
método de multiplicaciones sucesivas. Este método consiste en multiplicar
la parte fraccionaria de N10 por la base b y luego repetir la operación con la
parte fraccionaria de cada resultado obtenido. El método se aplica hasta
que la nueva parte fraccionaria obtenida sea cero o resulte igual a una
anterior. Al finalizar, la parte fraccionaria de N10 expresada en sistema base
b se forma con la parte entera de los resultados de cada multiplicación,
tomándolos en el mismo orden en el que fueron obtenidos.
La Figura 2.5 muestra un ejemplo de conversión de decimal a binario
por multiplicaciones sucesivas.
48
Estructura y Funcionamiento de Computadoras I Unidad 2 – Representación de datos
Figura 2.6 Ejemplo de conversión de decimal a binario con parte fraccionaria periódica.
49
Figura 2.7 Ejemplo de conversión de decimal a binario.
50
Estructura y Funcionamiento de Computadoras I Unidad 2 – Representación de datos
Figura 2.8 Conversión de un número entero de decimal a binario por método de restas sucesivas.
51
Figura 2.9 Conversión de un número fraccionario de decimal a binario por método de sumas sucesivas.
Observación:
En algunos casos es necesario utilizar infinitos términos para que la
sumatoria alcance la parte fraccionaria. En este caso se debe truncar a un
cierto número de cifras, y por consiguiente no se puede alcanzar la
igualdad. Un caso particular de infinitas cifras es cuando existe un período
(grupos de cifras que se repiten).
Ejemplo: N10 = 0,6 = 0,1001 1001 1001...2
Ejemplo 2.1
Convertir a decimal los siguientes números binarios:
1101002 = 1 × 25 + 1 × 24 + 0 × 23 + 1 × 22 + 0 × 21 + 0 × 20 = 5210
0, 1012 = 1 × 2−1 + 0 × 2−2 + 1 × 2−3 = 0,5 + 0,125 = 0,62510
52
Estructura y Funcionamiento de Computadoras I Unidad 2 – Representación de datos
Ejemplo 2.2
Convertir a decimal el número A798C,1E16
53
2.2.4. Conversiones entre binario y hexadecimal
Como hemos descrito, una desventaja del sistema binario es que la
representación de valores requiere más dígitos que en los demás sistemas.
Por el contrario, el sistema hexadecimal es más compacto y proporciona un
mecanismo muy sencillo de conversión a sistema binario debido a que las
bases se encuentran relacionadas por la expresión 24 = 16. Esta relación
significa por una parte que con cuatro dígitos binarios pueden obtenerse 16
combinaciones distintas, pero como esta cantidad coincide con la base
hexadecimal, la relación también implica que para identificar un dígito
hexadecimal se requieren cuatro dígitos binarios, como muestra la Tabla
2.1.
54
Estructura y Funcionamiento de Computadoras I Unidad 2 – Representación de datos
Ejemplo 2.3
Convertir a binario el número 27A,616
Escribimos las equivalencias en binario para cada dígito hexadecimal:
N16 = 2 7 A , 6
0010 0111 1010 , 0110
Ejemplo 2.4
Convertir a hexadecimal el número 1 1100,1011 0111 0112
Observación:
Se invita al lector a verificar las operaciones de conversión de
bases entre los distintos sistemas de numeración utilizando las funciones
de ingeniería de Microsoft Excel. Algunas de ellas son:
BIN.A.DEC convierte de binario a decimal
DEC.A.HEX convierte de decimal a hexadecimal
OCT.A.HEX convierte de octal a hexadecimal
55
2.2.5. Aritmética en los sistemas de numeración
Las operaciones aritméticas de adición, sustracción, multiplicación y
división, son esencialmente igual en todos los sistemas de numeración
posicional. A los fines de esta materia sólo presentaremos las operaciones
aritméticas de suma y resta en los sistemas binario y hexadecimal.
Adición
Las reglas prácticas para sumar en base b son:
Se ordenan los sumandos uno debajo del otro, alineados para operar con
los dígitos de igual orden.
Se calcula en decimal la suma de los dígitos del mismo orden,
comenzando con los dígitos de orden menor.
Si la suma es menor que b, el resultado expresado en base b es de un
solo dígito y su valor coincide con la suma decimal.
Si la suma es mayor o igual que b, se debe recurrir a la posición de orden
siguiente para expresar el valor. Esto se hace restando b unidades al
resultado, teniendo en cuenta que cada vez que se resta la base se debe
aumentar en una unidad el dígito del orden siguiente (próxima columna
a la izquierda). La unidad que “se lleva” al orden siguiente se denomina
acarreo.
Sustracción
Como hemos planteado, la resta en base b se realiza de la misma
manera que en sistema decimal. Sólo se debe tener en cuenta, la siguiente
salvedad: Cuando el sustraendo es mayor al minuendo y es necesario “pedir
prestado” al dígito de la izquierda, se piden b unidades. Esta regla es la
misma para cualquier base, pero estamos tan familiarizados a su aplicación
en el sistema decimal que quizás perdemos de vista que en ese caso el
“pido” es de diez unidades.
S1) 0 + 0 = 0
S2) 0 + 1 = 1
S3) 1 + 0 = 1
S4) 1 + 1 = 0 y se lleva 1 al orden siguiente.
La sumas 0+0, 0+1 y 1+0 son evidentes, pero la suma 1+1, cuyo
resultado en decimal es 2, debe escribirse en binario como 10. En este caso,
al resultado se le debe restar la base, por eso la regla expresa que “1+1=0 y
se lleva 1 al orden siguiente”.
La Figura 2.11 muestra los pasos realizados en una suma de ejemplo.
56
Estructura y Funcionamiento de Computadoras I Unidad 2 – Representación de datos
57
Figura 2.12 Ejemplo de suma binaria dividida en sumas parciales de dos operandos..
R1) 0 - 0 = 0
R2) 1 - 0 = 1
R3) 1 - 1 = 0
R4) 0 - 1 = 1 tomando prestado 1 del orden siguiente.
58
Estructura y Funcionamiento de Computadoras I Unidad 2 – Representación de datos
Ejemplo 2.5
59
2.2.5.2 Aritmética en el Sistema Hexadecimal
Adición. Como planteamos anteriormente, la operación de suma se realiza
siguiendo las mismas reglas. En caso de base 16, se debe recordar las
equivalencias para los valores de 10 a 15 (dígitos A a F).
Aunque los pasos son los mismos que en base decimal, cuando la
suma de dos dígitos excede la base, el cálculo mental del dígito resultado
puede resultar confuso. Por ello, es conveniente explicitar la resta que se
realiza para calcular el acarreo.
Ejemplos: 8 3
+9 +5
17 Suma decimal 8 Suma decimal
-16 Modificación -0 Modificación
1 1 Suma en hexadecimal 8 Suma hexadecimal
Ejemplo 2.6
Ejemplo 2.7
60
Estructura y Funcionamiento de Computadoras I Unidad 2 – Representación de datos
N + C(N) = bn
C(N) = bn − N
Ejemplo 2.8
Encontrar el complemento a la base de los siguientes números: 310 , 5310 , 1102 y 10012 ,
Identificando los valores de b y n en cada caso y aplicando la definición de complemento a la base, tenemos:
Por definición de complemento a la base: C(N) = bn – N
310 b = 10 ; n = 1, luego:
C10(310) = (101)10 – (3)10 = 1010 – 310 = 710
5310 b = 10 ; n = 2, luego:
C10(5310) = (102)10 – (53)10 = 10010 – 5310 = 4710
1102 b = 2 ; n = 3, luego:
C2(1102) = (1011)2 – (110)2 = 10002 – 1102 = 102
10012 b = 2 ; n = 4, luego:
C2(10012) = (10100)2 – (1001)2 = 100002 – 10012 = 1112
N + C ′ (N) = (bn − 1)
C ′ (N) = (bn − 1) − N
61
Ejemplo 2.9
Encontrar el complemento a la base menos uno de los siguientes números: 310 , 5310 , 1102 y 10012 ,
Identificando los valores de b y n en cada caso y aplicando la definición de complemento a la base menos uno,
tenemos:
Por definición de complemento a la base menos uno: C’(N) = (bn – 1) – N
310 b = 10 ; n = 1, luego:
C9(310) =( (101)10 – (1)10 ) – (3)10 = (1010 – 110) – 310 = 910 – 310 = 610
5310 b = 10 ; n = 2, luego:
C9(5310) =( (102)10 – (1)10 ) – (53)10 = (10010 – 110) – 5310 = 9910 – 5310= 4610
1102 b = 2 ; n = 3, luego:
C1(1102) = ( (1011)2 – (1)10 ) – (110)2 = (10002 – 12) – 1102 = 1112 – 1102 = 12
10012 b = 2 ; n = 4, luego:
C1(10012) =( (10100)2 – (1)10 ) – (1001)2 = (100002 – 12) – 10012 = 11112 – 10012 = 1102
Ejemplo 2.10
Ejemplo 2.11
Resolver la operación 8 – 3 expresada en decimal trabajando con complemento a la base menos uno
(complemento a nueve).
Como el número se encuentra representado con un solo dígito, n = 1. Luego:
C9(3) = (101 – 1) – 3 = 9 – 3 = 6
La operación 8 – 3 utilizando complemento a nueve es:
8 – 3 = 8 + C9(3) = 8 + 6 = 4 + 1 = 5 (En el resultado final se suma el acarreo producido en 8 + 6 = 14)
62
Estructura y Funcionamiento de Computadoras I Unidad 2 – Representación de datos
En complemento a la base:
C(C(N)) = bn − C(N)
C(C(N)) = bn − (bn − N)
C(C(N)) = bn − bn + N)
C(C(N)) = N
En resumen:
El complemento de un número es la diferencia entre dicho
número y otro dado como referencia.
Los valores de referencia bn y (bn – 1) definen el complemento a la
base y el complemento a la base menos uno, respectivamente.
Para representar un número negativo se puede utilizar el
complemento de ese número a la base o a la base menos uno en
el sistema de numeración utilizado.
La utilidad del complemento radica en que permite transformar,
restas en sumas, con ciertas precauciones.
El complemento del complemento de N, es N.
63
Complemento a 1 de un número N: Para realizar la operación C1(N) en
forma práctica, se expresa N en binario y luego se escribe el
complemento lógico bit a bit.
Figura 2.14 Cálculo por definición y método práctico para encontrar C1(N) como complemento lógico bit a bit de N.
Demostración:
𝐶1 (𝐶1 (𝑁)) = 𝐶1 ((2𝑛 − 1) − 𝑁) se reemplazó C1(N) por su definición 2n - N
𝑛 𝑛
𝐶1 (𝐶1 (𝑁)) = (2 − 1) − (2 − 1 − 𝑁) se reemplazó C1 por su definición
𝑛 𝑛
𝐶1 (𝐶1 (𝑁)) = 2 − 1 − 2 + 1 + 𝑁 se quitan paréntesis y cambian los signos
Luego: 𝐶1 (𝐶1 (𝑁)) = 𝑁
64
Estructura y Funcionamiento de Computadoras I Unidad 2 – Representación de datos
Figura 2.15 Cálculo por definición y métodos prácticos para encontrar C2(N).
Demostración:
𝐶2 (𝐶2 (𝑁)) = 𝐶2 (2𝑛 − 𝑁) se reemplazó C2(N) por su definición 2n - N
𝐶2 (𝐶2 (𝑁)) = 2𝑛 − (2𝑛 − 𝑁) se reemplazó C2 por su definición
𝐶2 (𝐶2 (𝑁)) = 2𝑛 − 2𝑛 + 𝑁 se quitan paréntesis y cambian los signos
Luego: 𝐶2 (𝐶2 (𝑁)) = 𝑁
65
Subconjunto Descripción Ejemplos
Números que designan la cantidad de
elementos de un conjunto. No tienen parte
Naturales 0, 1, 2, 3, 4, ...
fraccionaria, son los “enteros positivos”
66
Estructura y Funcionamiento de Computadoras I Unidad 2 – Representación de datos
- Complemento a 1 (Enteros)
- Complemento a 2 (Enteros)
- En exceso a M (Enteros)
- Coma flotante (Racionales e Irracionales)
De esta manera, los formatos de longitud fija son aquellos que utilizan
una cantidad determinada de bits asignados para la representación.
Los formatos de longitud variable, como su nombre lo indica, tendrán
un tamaño variable que dependerá de la cantidad de caracteres a
representar, correspondiéndole en la mayoría de los casos 1 byte/carácter.
𝑖=0
Ejemplo 2.12
Rango de representación
En binario puro de n bits, el menor número corresponde a la
combinación en la cual todos los bits son 0, que de acuerdo al TFN,
representa al número cero. El mayor número corresponde a la combinación
que tiene todos los bits igual a 1, cuyo valor es 2n –1. Por lo tanto, el rango
para este tipo de representación R = [0, 2n –1].
67
Ejemplo 2.13
Ejemplo 2.14
68
Estructura y Funcionamiento de Computadoras I Unidad 2 – Representación de datos
Ejemplo 2.15
69
Rango de representación
Como en Signo y Módulo se reserva el primer bit para el signo, de la
longitud total n solamente quedan (n-1) bits para representar el módulo.
Con (n-1) bits se pueden generar 2n-1 combinaciones.
La Figura 2.17 muestra cómo se representan los números en sistema
Signo y Módulo de n bits. Para los enteros positivos, el bit de signo toma el
valor S=0 y el rango es R = {+0, (2n-1 – 1)}. De manera similar, los números
negativos se representan con S=1 y el rango es R = {–(2n-1 – 1), –0}.
Por tanto, el rango de representación en Signo y Módulo de n bits es
R = {–(2n-1 – 1), (2n-1 – 1)}.
Ejemplo 2.16
Calcular el número máximo, el mínimo y el rango de representación que existe trabajando en Signo y Módulo
de 8 bits.
La cantidad de números negativos es: 2n-1 = 28-1 = 128 (se considera un bit menos por el de signo). El mismo
razonamiento es válido para los números positivos.
El rango para los negativos es: desde -(2n-1 - 1) = -(28-1 - 1) = -127 hasta -0 (se descarta una combinación para el
cero negativo)
El rango para los positivos es: desde +0 hasta (2n-1 - 1) = (28-1 - 1) = 127 (se descarta una combinación para el
cero positivo).
Luego: El número mínimo es: -127 es decir 11111111
El número máximo es: 127 es decir 01111111
El rango de representación es R = {-127, 127}
70
Estructura y Funcionamiento de Computadoras I Unidad 2 – Representación de datos
En resumen…
En el Sistema de Representación Signo y Módulo de n bits:
Se pueden representar números enteros positivos y negativos.
El primer bit indica el signo del número.
El rango de representación es simétrico: R = {–(2n–1 – 1) , (2n–1 – 1)}.
Existen dos representaciones para el cero: 0000... y 1000…
Para representar un número N en Sistema de Representación Signo y Módulo, el bit de mayor orden
(bit de signo) adopta el valor 0 o 1 según el signo de N y los (n-1) bits restantes representan el valor
absoluto de N en binario puro.
La realización de operaciones aritméticas presenta dificultades.
71
sistema un número negativo –N se representa con el Complemento a 1 de
+N, la operación C1(N) puede interpretarse como un cambio de signo.
Recordando lo descrito en la definición de la operación Complemento a
1, la referencia para hallar el complemento es el valor (2n – 1). El cálculo
puede hacerse por definición: C1(N) = (2n – 1) – N o aplicando el método
práctico. El método práctico para hallar el complemento a uno de un
número N consiste en expresar N en binario con n bits y luego cambiar bit a
bit los ceros por unos y los unos por ceros.
Ejemplo 2.17
Rango de representación
Dada una longitud n, los números positivos se representan con el bit
dn-1 igual a 0 y con la magnitud en Binario Puro. Por tanto, este sistema
permite representar números positivos desde 0 hasta (2n-1 –1).
Por otro lado, los números negativos se representan mediante su
Complemento a 1. Para determinar el rango de los números negativos hay
que calcular el mínimo y el máximo representable.
72
Estructura y Funcionamiento de Computadoras I Unidad 2 – Representación de datos
Ejemplo 2.18
Calcular el número máximo, el mínimo y el rango de representación que existe trabajando en sistema de
representación Complemento a 1 de 8 bits.
Al igual que en sistema Signo y módulo, se debe discriminar el estudio del rango en números negativos y
positivos.
La cantidad de combinaciones para números negativos es: 2n−1 = 28−1 = 27 = 128 (se considera un bit
menos por el de signo). Esto también es válido para los números positivos.
El rango para números negativos es:
Desde: – (2n−1 − 1) = −(28−1 − 1) = −(27 − 1) = −(128 − 1) = −127
Hasta: –0 (se utiliza una combinación para el cero)
El rango para los números positivos es:
Desde: +0
Hasta: (2n−1 − 1) = (27 − 1) = (128 − 1) = 127 (se utiliza una combinación para el cero)
El número mínimo es: -127 es decir 1000 0000
El número máximo es: 127 es decir 0111 1111
Luego, El rango en SRC1 de 8 bits es R = {–127, 127}
73
Ejemplo 2.19
En resumen…
En el Sistema de Representación Complemento a 1 de n bits:
Se pueden representar números enteros positivos y negativos.
El rango de representación es simétrico: R = {–(2n–1 – 1) , (2n–1 – 1)}.
Existen dos representaciones para el cero.
El primer bit indica el signo del número, pero forma parte del mismo.
Si N es positivo se expresa en binario puro, si es negativo se representa mediante el C1(N)
El Complemento a 1 de un número N por definición es: C1(N) = (2n – 1) – N.
Como método práctico, C1(N) se puede obtener cambiando 0 por 1 y 1 por 0 en la expresión binaria de
N (complemento lógico).
Para obtener el número original N a partir de su Complemento a 1, se calcula el complemento del
complemento: C1(C1(N)) = N
Se pueden realizar operaciones aritméticas con mayor simplicidad que en Signo y Módulo.
74
Estructura y Funcionamiento de Computadoras I Unidad 2 – Representación de datos
Ejemplo 2.20
Rango de representación
Como se expuso anteriormente, en el SRC2, los números positivos se
representan en binario puro. Teniendo en cuenta que en tal caso el bit dn-1
correspondiente al dígito de mayor orden ha de ser 0, este sistema permite,
por tanto, representar los enteros positivos desde 0 hasta (2n-1 – 1) es decir,
el rango positivo es R+ = {0 , (2n-1 – 1)}
Por otro lado, los números negativos se representan en complemento a
dos, que se calcula restando el valor de referencia 2n menos la magnitud del
número negativo a representar. Para determinar el rango de los números
negativos hay que calcular el mínimo y el máximo representable.
75
Entonces: Valor mínimo negativo = –(2n-1)
Ejemplo 2.21
Calcular el número máximo, el mínimo y el rango de representación que existe trabajando en sistema de
representación Complemento a 2 de 8 bits.
Al igual que en sistema Signo y módulo, se debe discriminar el estudio del rango en números negativos y
positivos.
La cantidad de combinaciones para números negativos será: 2n−1 = 28−1 = 27 = 128 (se considera un bit
menos por el de signo). Esto es también válido para los números positivos.
El rango para números negativos será: desde −2n−1 = −28−1 = −27 = −128 hasta –1 (no se considera la
combinación para el cero, al ser éste positivo)
El rango para los números positivos será: desde 0 hasta (2n−1 − 1) = (27 − 1) = (128 − 1) = 127 (en este
caso sí se considera una combinación para el cero , al ser éste positivo)
El número mínimo será: -128 es decir 1000 0000
El número máximo será: 127 es decir 0111 1111
Luego, El rango de representación en SRC2 de 8 bits será: [–128, 127]
76
Estructura y Funcionamiento de Computadoras I Unidad 2 – Representación de datos
Ejemplo 2.22
Ejemplo 2.23
77
En resumen…
En el Sistema de Representación Complemento a 2 de n bits:
Se pueden representar números enteros positivos y negativos.
El rango de representación es asimétrico: R = {–(2n–1) , (2n–1 – 1)}.
La representación para el cero es única.
El primer bit indica el signo del número, pero forma parte del mismo.
Si el número N es positivo se expresa en binario puro, si es negativo se representa mediante el C2(N).
El Complemento a 2 de un número N por definición es: C2(N) = 2n – N.
Como método práctico, el Complemento a 2 de N se puede obtener como C1(N) + 1.
Para obtener el número original N a partir de su Complemento a 2, se calcula el complemento del
complemento: C2(C2(N)) = N.
Se pueden realizar operaciones aritméticas con mayor simplicidad, sin tener en cuenta el signo de los
operandos.
Ejemplo 2.24
78
Estructura y Funcionamiento de Computadoras I Unidad 2 – Representación de datos
En resumen…
En el Sistema de Representación Exceso a M de n bits:
Se pueden representar números enteros positivos y negativos.
El rango de representación es asimétrico: R = {–(2n–1) , (2n–1 – 1)}.
Para representar un número N, se calcula el Exceso a M y el resultado se expresa en binario puro.
El Exceso a M se calcula sumando el valor M al número N. de tal forma que el número resultante
siempre es positivo, por lo tanto no hace falta reservar un bit de signo.
Como valor de M suelen emplearse M = 2n–1 y M = (2n–1 – 1)
79
coma fraccionaria flota de derecha a izquierda y viceversa. Es muy útil
cuando se manipulan números muy grandes o muy pequeños, como puede
apreciarse en el siguiente ejemplo:
Ejemplo 2.25
Normalización
Las representaciones equivalentes que muestra el Ejemplo 2.25 para
cada número, no son únicas. Observe que el valor 0,00000001257 podría
expresarse como 12,57 × 10-9, o bien como 125,7 × 10-10. Sin embargo, la
notación científica propone utilizar la expresión equivalente que tenga la
parte entera formada por una sola cifra significativa, es decir el coeficiente c
debe ser tal que 0 < c < b. La expresión equivalente obtenida con este
criterio se denomina forma normalizada.
Como hemos descripto, la forma normalizada se obtiene, según sea
necesario, multiplicando o dividiendo por la base, y ajustando los valores de
la mantisa y el exponente de manera tal que se conserve el valor original del
número.
Ejemplo 2.26
Nótese que para optimizar el uso de los n bits, no se reservan bits para
representar el coeficiente c, ya que en base binaria, los valores
normalizados siempre presentan c=1, y por lo tanto, puede omitirse en la
80
Estructura y Funcionamiento de Computadoras I Unidad 2 – Representación de datos
81
La norma IEEE 754
La norma IEEE 754 especifica la representación de números reales a
través de un formato de coma flotante que utiliza un número fijo de bits. Se
consideran dos formatos básicos:
S Exponente Mantisa
S Exponente Mantisa
Ejemplo 2.27
82
Estructura y Funcionamiento de Computadoras I Unidad 2 – Representación de datos
Ejemplo 2.28
Suponiendo que el exponente se almacena en 8 bits, y el exceso es M=127, se producirán las siguientes
transformaciones entre exponentes originales del número y exponentes almacenados en la Norma IEEE 754
Ejemplo 2.29
S Exponente Mantisa
0 10000010 10001100000000000000000
83
Otra manera de representar el número en coma flotante es dividir los
32 bits en campos de 4 bits y expresarlos en hexadecimal de la siguiente
manera:
4 1 4 6 0 0 0 0 Notación compacta
hexadecimal
Ejemplo 2.30
S Exponente Mantisa
1 01110111 01000000000000000000000
Formateado en campos de 4 bits la representación es BBA00000
84
Estructura y Funcionamiento de Computadoras I Unidad 2 – Representación de datos
Ejemplo 2.31
Ejemplo 2.32
La siguiente tabla muestra valores representados en formato IEEE 754 de precisión simple. En la primera
columna están los valores en notación hexadecimal (8 dígitos), en la segunda columna se muestran los 32 bits
de la representación y en la tercera columna se encuentra la formación del valor a partir de los valores del bit
de signo y el exponente, agregando el bit implícito.
3F 80 00 00 0011 1111 1000 0000 0000 0000 0000 0000 1,000000000...0 × 20 = 1.0
BF 80 00 00 1011 1111 1000 0000 0000 0000 0000 0000 -1,000000000...0 × 20 = -1.0
40 00 00 00 0100 0000 0000 0000 0000 0000 0000 0000 1,000000000...0 × 21 = 2.0
3F 00 00 00 0011 1111 0000 0000 0000 0000 0000 0000 1,000000000...0 × 2-1 = 0,5
3F C0 00 00 0011 1111 1100 0000 0000 0000 0000 0000 1,100000000...0 × 20 = 1,5
85
Observación:
Para facilitar al lector la realización de algunos ejemplos que le
permitan terminar de comprender y comprobar estas reglas, en la siguiente
página web se incluye un convertidor automático de formatos que permite
introducir un número en formato decimal (incluso en notación científica), y
comprobar el aspecto de su almacenamiento binario según el Estándar
IEEE 754. El convertidor, permite obtener la representación en simple y
doble precisión para el número dado.
www.zator.com/Cpp/E2_2_4a.htm e ingresar al vínculo Convertidor
Casos Especiales
El estándar IEEE 754 considera varios casos especiales como
excepciones a la norma:
86
Estructura y Funcionamiento de Computadoras I Unidad 2 – Representación de datos
En precisión simple:
Desde: 0,0000 0000 0000 0000 0000 001 × 2-127 = 2-23 × 2-127 = 2-150
Hasta: 0,1111 1111 1111 1111 1111 111 × 2-127 1 × 2-127 = 2-127
En precisión doble:
Desde: 0,0000 … 0001 × 2-1023 = 2-52 × 2-1023 = 2-1075
Hasta: 0,1111 … 1111 × 2-1023 1 × 2-1023 = 2-1023
Valores infinitos
El estándar utiliza la combinación representación de e = 1…111 (todos
unos) y m = 0…000 (todos ceros) para indicar los valores infinito positivo o
negativo., según el valor del bit de signo. Estos valores se utilizan para
indicar condiciones de desbordamiento, esto es que, el resultado obtenido
en la última operación realizada excede el rango de representación.
Esta distinción ha permitido al estándar definir procedimientos para
continuar las operaciones después que se produce un desbordamiento.
Ejemplo:
0 11111111 00000000000000000000000 = +
1 11111111 00000000000000000000000 = -
Valores no numéricos
Cuando e = 255 y m ≠ 0. Se identifican por un exponente con todos
sus valores a 1, y un valor distinto de cero para la mantisa.
Indican valores indeterminados u operaciones no válidas.
Ejemplo:
0 11111111 10000100000000000000000
1 11111111 00100010001001010101010
87
+ 0 < Exp < Max Cualquier patron bits
-
Normalizado
+ 0 0
Cero -
+ 1111...1 0
Infinito -
Figura 2.19 Cuadro resumen de casos especiales del formato IEEE 754.
88
Estructura y Funcionamiento de Computadoras I Unidad 2 – Representación de datos
Ejemplo 2.33
Convertir a decimal el siguiente número representado en la Norma IEEE 754 de precisión simple expresado en
notación compacta hexadecimal: BF80 0000
En este caso, lo primero que debe hacerse es convertir los dígitos hexadecimales a binario:
B F 8 0 0 0 0 0
1011 1111 1000 0000 0000 0000 0000 0000
Teniendo en cuenta que por ser de precisión simple, la distribución de bits tomados de izquierda a derecha es:
1 bit de Signo, 8 bits de exponente y 23 bits de mantisa, nos queda:
S Exponente Mantisa
1 0111 1111 0000 0000 0000 0000 0000 000
Para encontrar el número representado, se procede de manera inversa a la realizada en la conversión a
formato IEEE754
1. Obtener el valor del exponente. El exponente en simple precisión está representado en Exceso 127. Para
hallar el exponente se debe convertir la representación en exceso a decimal y restarle 127 :
Representación en Exceso 127 = 0111 1111 = (127)10
e = Representación en Exceso – 127 = 127 – 127 = 0
2. Obtener la mantisa. La mantisa se obtiene tomando los bits correspondientes de la representación del
número:
m = 0000 0000 0000 0000 0000 000
3. Obtener el número sin normalizar. Primero se debe obtener la forma normalizada 1,m x be aplicando el
exponente a la mantisa y teniendo en cuenta el uno tácito (la representación según la Norma IEEE754 omite
el 1 que está delante de la coma en 1,m):
Valor normalizado = 1,0000 0000 0000 0000 0000 000 x (20)10
Nota: Se muestra be en base 10 para mayor claridad.
Luego, al resolver la forma normalizada se obtiene el número sin normalizar. El método práctico consiste en
desplazar la coma tantos lugares como indique el exponente, hacia la derecha o hacia la izquierda según el
signo del exponente. En este caso el exponente es cero, luego:
N2 = 1, 0000 0000 0000 0000 0000 000 x (1) = 1,0000 0000 0000 0000 0000 0002 = 12
4. Convertir el número a decimal. La conversión a decimal queda:
12 = 110
5. Determinar el signo del número. La representación del número tiene S = 1, lo que indica que el número es
negativo. Por lo tanto:
N10 = -1
89
En resumen…
En el Sistema de Representación según la norma IEEE 754:
Se pueden representar números reales.
La representación se basa en la expresión binaria en notación científica del número: N = 1,m × be ,
donde N es un número real positivo o negativo, m es la mantisa (parte fraccionaria), b es la base
binaria y e el exponente.
Existen dos formatos básicos: simple precisión (32 bits) y doble precisión (64 bits).
La precisión simple utiliza 1 bit de signo, 8 bits para el exponente y 23 bits para la mantisa.
La precisión doble utiliza 1 bit de signo, 11 bits para el exponente y 52 bits para la mantisa.
Para representar un número N, el primer paso es expresarlo en binario puro y luego normalizarlo, esto
es, llevarlo a la forma 1,m × be
El primer bit indica el signo del número.
El exponente e se representa en Exceso 127 o Exceso 1023, según sea el formato de la representación
(precisión simple o doble).
La mantisa m es la parte fraccionaria del número normalizado; es decir, no se representa el "1",
denominado uno implícito., pero al formar el número a partir de su representación, hay que tener en
cuenta que este 1 forma parte del valor del número.
Nº
Precisión
Tipo de Rango de valores
(dígitos decimales)
bits
Carácter 8 -128 a 127 ---
Carácter sin signo 8 0 a 255 ---
Enumerado 16 -32.768 a 32.767 ---
Entero corto 8 -128 a 127 ---
Tipos
Entero corto sin signo 8 0 a 255 ---
Enteros
Entero 16 -32.768 a 32.767 ---
Entero sin signo 16 0 a 65.535 ---
Entero largo 32 -2.147.483.648 a 2.147.483.648 ---
Entero largo sin signo 32 0 a 4.294.967.295 ---
Coma flotante 32 ± [3,4E-38 a 3,4E38], 0 7
Tipos
Coma flotante doble 64 ± [1,7E-308 a 1,7E308], 0 15
Reales
Coma flotante doble largo 80 ± [3,4E-4932 a 1,1E4932], 0 19
Tabla 2.4 Principales tipos de datos en C++ (compilador Borland C++ para PC)
90
Estructura y Funcionamiento de Computadoras I Unidad 2 – Representación de datos
Definiciones de error
Los errores numéricos surgen del uso de aproximaciones para
representar operaciones y valores verdaderos. Éstos incluyen los errores de
truncamiento que resultan del empleo de aproximaciones siempre por
defecto, por insuficiencia de precisión para representar el valor verdadero, y
los errores de redondeo, que están motivados por el mismo argumento que
los anteriores, pero que a diferencia de los de truncamiento, a veces se
producen por defecto y otras veces en exceso.
Para ambos tipos de errores, la relación entre el resultado verdadero y
el aproximado está dada por:
Valor verdadero = Valor aproximado + Error
o
Error = Valor verdadero - Valor aproximado
91
Ejemplo:
Calculemos el error cometido al tomar el valor Va 8,14 como una
aproximación con 2 decimales, del número Vv 8,14593.
Tenemos:
E Vv – Va 8,14593 – 8,14 = 0,00593
Ejemplos:
7
a) 2,33333... redondeado a 4 cifras significativas se representa igual
3
que si truncamos.
8
b) 2,66666... si lo redondeamos a 6 cifras significativas se aproxima
3
como 2,66667.
92
Estructura y Funcionamiento de Computadoras I Unidad 2 – Representación de datos
93
Ejemplo 2.34
Por lo tanto, el número 175,62 se representa en BCD con 3 Bytes y quedaría de la siguiente manera:
N = 0000 0001 0111 0101 0110 0010
Utilizando notación compacta hexadecimal:
N = 01 75 62
Ejemplo 2.35
94
Estructura y Funcionamiento de Computadoras I Unidad 2 – Representación de datos
En resumen…
El Sistema de Representación BCD:
Permite la representación de datos numéricos.
Representa cada dígito decimal mediante 4 bits (medio byte).
Permite realizar operaciones aritméticas (no ha sido explicado).
Existe un alto número de combinaciones desaprovechadas.
Existen dos formatos de BCD: empaquetado (4 bits/dígito) y desempaquetado (8 bits/dígito).
Es un formato de longitud variable, ya que la cantidad de bytes que ocupe la representación
dependerá de la cantidad de dígitos que tenga el número.
95
d) Caracteres geométricos y gráficos: son los símbolos con los que se
pueden representar formas geométricas o íconos elementales: ¶, ☼, ♀,▬,
▲, ▼, ←
e) Caracteres de control: representan órdenes de control. Estos son
insertados en los textos por los usuarios o por los programas de control
de periféricos o de comunicación. Algunos ejemplos son:
NL: pasar a la línea siguiente
CR: ir al comienzo de una línea
SYN: sincronización de una transmisión
Bits 7654
0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
3210 0000
0000 NUL DLE SP 0 @ P ` p Ç É á ░ ┴ Ð ß ±
0001 SOH DC1 ! 1 A Q a q ü æ í ▒ ┬ Ê Ô ‗
0010 STX DC2 “ 2 B R b r é Æ ó │ ├ Ë Ò ¾
0011 ETX DC3 # 3 C S c s â ô ú ┤ ─ È õ ¶
0100 EOT DC4 $ 4 D T d t ä ö ñ Á ┼ ı Õ §
0101 ENQ NAK % 5 E U e u à ò Ñ Â ã Í µ ÷
0110 ACK SYN & 6 F V f v å û ª À Ã Î þ ¸
0111 BEL ETB ‘ 7 G W g w ç ù º © ╚ Ï Þ °
1000 BS CAN ( 8 H X h x ê ÿ ¿ ╣ ╔ ┘ Ú ¨
1001 HT EM ) 9 I Y i y ë Ö ® ║ ╩ ┌ Û ·
1010 LF SUB * : J Z j z è Ü ¬ ╗ ╦ █ Ù ¹
1011 VT ESC + ; K [ k { ï ø ½ ╝ ╠ ▄ ý ³
1100 FF FS , < L \ l | î £ ¼ ¢ ═ ¦ Ý ²
1101 CR GS - = M ] m } ì Ø ¡ ¥ ╬ Ì ¯ ■
1110 SO RS . > N ^ n ~ Ä × « ┐ ¤ ▀ ´ �
1111 SI US / ? O _ o • Å ƒ » └ ð Ó
96
Estructura y Funcionamiento de Computadoras I Unidad 2 – Representación de datos
Ejemplo 2.36
Represente en código ASCII extendido usando notación en binario y hexadecimal la cadena “Hola”.
Como la conversión es directa, cada carácter es representado en un byte. De acuerdo con la Tabla 2.5. sería:
Hola = 0100 1000 0110 1111 0110 1100 0110 0001 en binario
Hola = 48 6F 6C 61 en hexadecimal
Bits 7654
0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
3210 0000
0000 NUL DLE DS IRS SP & - ø Ø ° µ ¢ ä å É 0
0001 SOH DC1 SOS ITB RSP ` / \ a j ü £ A J ÷ 1
0010 STX DC2 FS SYN â ê Â Ê b k s ¥ B K S 2
0011 ETX TM WUS IR { ë # Ë c l t · C L T 3
0100 PF RES BYP PN à è À È d m u © D M U 4
0101 HT NL LF RS á í Á Í e n v [ E N V 5
0110 LC BS ETB UC ã î Ã Î f o w ¶ F O W 6
0111 DEL IL ESC EOT } Ï $ Ï g p x ¼ G P X 7
1000 GE CAN SA SBS ç ì Ç Ì h q y ½ H Q Y 8
1001 SPS EM SFE IT ñ ß Ñ é i r z ¾ I R Z 9
1010 SMM CC SM RFF § ¤ ö : « ª ¡ ¬ SHY ¹ ² ³
1011 VT CU1 CU2 CU3 . Å , Ä » º ¿ │ ô û Ô Û
1100 FF IFS MFA DC4 < * % Ö ð æ Ð ─ ¦ ~ @ Ü
1101 CR IGS ENQ NAK ( ) _ ‘ ý , Ý ] ò ù Ò Ù
1110 SO IRS ACK + ; > = Þ Æ þ ´ ó ú Ó Ú
1111 SI IUS BEL SUB ! ^ ? “ ± ] ® × õ ÿ Õ EO
97
Ejemplo 2.37
Número de
Zona Códigos Símbolos codificados
caracteres
0000
Latín 1 256
00FF
A 0000 Otros alfabetos 7.936
Símbolos generales y caracteres fonéticos chinos,
2000 8.192
japoneses y coreanos
I 4000 Ideogramas 24.576
O A000 Pendiente de asignación 16.384
E000
R Caracteres locales y propios de los usuarios 8.192
FFFF
98
Estructura y Funcionamiento de Computadoras I Unidad 2 – Representación de datos
Está claro que el error puede producir un nuevo código que también
cumpla la ley. El problema de diseño es, por tanto, buscar una ley que
permita detectar y/o corregir todos los errores posibles o probables.
99
Se suele agregar acompañando a cada octeto en los periféricos o a
cada palabra en la memoria principal.
El código de paridad permite detectar el error en un solo bit (error
simple), por lo que es válido para aquellos casos en que éste sea el tipo de
error más probable. Si las condiciones hacen más probable el error múltiple
y existe un número par de bits con error, la paridad resulta correcta, por lo
que ese tipo de error no puede detectarse con este algoritmo.
Cabe destacar que este código solo permite detectar el error, pero no lo
corrige ya que no permite identificar cuál es el bit erróneo.
Ejemplo 2.38
Dada la cadena 1101011 a transmitir como dato, agregue el bit de paridad considerando paridad impar:
Para la cadena 1101011 el bit de paridad es 0 para cumplir con el criterio de paridad impar, ya que al analizar la
cadena encontramos 5 unos, que es un número impar. Para que la cadena resultante siga presentando paridad
impar, el bit a agregar debe ser 0.
Por lo tanto, la cadena resultante a ser operada en la transmisión es 11010110.
100
Estructura y Funcionamiento de Computadoras I Unidad 2 – Representación de datos
Bibliografía
101