Sistemas de Representacion
Sistemas de Representacion
INTRODUCCIÓN
1
INTRODUCCIÓN
Desde pequeños todo el mundo está acostumbrado a la utilización de números
para representar cantidades, se utilizan de una forma automática, en función de que se
quiera contar manzanas, balances, niveles, valores de tensión o intensidad, relaciones
complejas ... etc. Tanto es así que muchas veces no se distingue entre la cantidad y los
símbolos que se utilizan para expresar estas cantidades. Cuando se utilizan distintos
sistemas de numeración es algo que hay que tener muy presente.
figura 1
Se pueden contar los días del mes de enero, tiene treinta y un días, para expresar
esta cantidad, de forma numérica lo más normal sería: 31, pero también se podría haber
expresado como 4,43, 43, XXXI o☺, por ejemplo. Si bien la primera representación
(31), no habrá ofrecido ninguna duda las otras dos representan la misma cantidad de
días, sólo que de forma diferente.
En el primer caso (31) al contar los días lo que se ha hecho ha sido agrupar en
grupos de diez días todos los que se han podido, al final se observa que se han formado
tres grupos de diez y sobra 1, de ahí la representación 31
En el segundo caso (4,43) los grupos que se han formado son de siete días, y el
resto que queda es de tres, este tres es lo que se representa como una parte de la semana
(siete días)
2
meses de treinta y un día se representan por este signo y los de 30 y 28 por ☻ y ☼
respectivamente.
Naturales: 0, 1, 2, 3, 4…
Enteros: … -3, -2, -1, 0, 1, 2, 3…
Racionales: ⅔, ⅝ etc.
Irracionales: π, e, √2 etc.
Reales: todos los anteriores
Complejos: 1+2i, 12∟32
Así mismo es muy interesante la forma de representar estas cantidades para tener
una idea intuitiva de lo que representan así por ejemplo la figura 2 y 2b presentan la
evolución de la velocidad del viento en un día
50 50
45 45
40 40
35 35
velocidad
velocidad
30 30
25 25
20 20
15 15
10 10
5 5
0 0
0 2 4 6 8 10 12 14 16 18 2 0 2 2 2 4 0 2 4 6 8 10 12 14 16 18 20 22 24
hora hora
figura 2
3
En la figura 2a se han representado los valores de la velocidad del viento a lo
largo de un día, mientras que la figura 2b representa los mismos valores pero en unos
instantes de tiempo determinados. La diferencia entre ambas representaciones es
importante desde el punto de vista conceptual:
Podría pensarse que la representación discretizada puede ser menos útil que la
continua, ya que no se dispone de los valores intermedios entre muestras, no obstante
esto en la realidad no es especialmente importante, y los errores que se pueden cometer
sobre señales continuas, especialmente ruidos asociados a las mismas, hacen que una
señal discreta y digitalizada presente mejores características, siendo evidentemente,
mucho más fácil de almacenar.
figura 3
figura 4
4
De igual manera un termómetro clínico, para medir la temperatura corporal
existe en las dos versiones, analógica y digital, en el primer caso una fina barra de
mercurio indica sobre una escala graduada la temperatura, en el segundo caso se utiliza
para la visualización unos caracteres numéricos.
Una representación analógica es más intuitiva que una digital que en principio
puede requerir un cierto aprendizaje por parte del usuario, la medida analógica puede
dividirse en porciones infinitesimales frente a la digital y sin embargo la precisión de
una medida en digital es más precisa que una analógica.
SISTEMAS DE NUMERACION
Los primeros sistemas de representación de cantidades que utilizaron símbolos,
como el romano, tenían varios inconvenientes en su utilización: era complicado escribir
cantidades grandes, las operaciones aritméticas eran muy engorrosas y carecían de
símbolo para representar al 0. El primer sistema de representación numérica que
utilizaba no solo símbolos sino la posición de símbolo, al igual que un sistema de
numeración, pertenece a los babilonios, esto le permitía escribir cantidades grandes sin
necesitar inventar nuevos símbolos.
1904 = 1000+900+4
1904 = 1x(1000) + 9x(1000) + 0x(10) + 4x(1)
5
En la que cada posición de izquierda a derecha Ŗvaleŗ 10 veces la anterior, cada
cifra es denominada dígito. Esto es evidente para todo el mundo, no obstante conviene
ver lo evidente para comprender sistemas de numeración diferentes al base 10.
Como norma general se puede decir que utilizando bases menores, la cantidad de
dígitos que hay que utilizar para representar una cantidad es mayor. Por ejemplo
10310=1101112
165410=110011101102
Y por el contrario las operaciones aritméticas son más sencillas, baste con pensar
en la tabla de multiplicación en base 10. En base 2 se reduce a 1x1 =1, 1x0 =0 y 0x0=0
6
binario a decimal (sistema binario a sistema decimal) es simple y consiste en poner el
polinomio y operar en base 10:
1011010100 = + 1x29 + 0x28 + 1x27+ 1x26 + 0x25 + 1x24 + 0x23 + 1x22 + 0x21 + 0x20
= 724
Tabla 1
Sistema decimal Sistema binario
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001
10 1010
11 1011
12 1100
13 1101
14 1110
15 1111
Para convertir números de una base b2 a otra b si se cumple que b2 > b basta con
dividir por la nueva base e ir tomando los restos. La cantidad convertida a la nueva base
b se escribe como potencias de esa base y tendrá la forma:
(C)b2 = anbn + an-1bn-1 + an-2bn-2 + an-3bn-3 + ... + a3b3 + a2b2 + a1b1 + a0b0
(C)b2 /b = anbn-1 + an-1bn-2 + an-2bn-3 + an-3bn-4 + ... + a3b2 + a2b1 + a1b0 + a0b-1
7
Tabla 2
Parte entera Cociente resto coeficiente
613 306 1 a0
306 153 0 a1
153 76 1 a2
76 38 0 a3
38 19 0 a4
19 9 1 a5
9 4 1 a6
4 2 0 a7
2 1 0 a8
1 1 a9
Con lo que:
61310 = 10011001012
Tabla 3
Parte fracc. producto Parte ent. coeficiente
0,613 1,226 1 a0
0,226 0,452 0 a1
0,452 0,904 0 a2
0,904 1,808 1 a3
0,808 1,616 1 a4
0,616 1,232 1 a5
0,232 0,464 0 a6
0,464 0,932 0 a7
0,932 1,864 1 a8
0,864 1,728 1 a9
Con lo que
8
0,61310 = 0,1001110011….2
Los sistemas que cumplen esta condición son aquellos cuya base es potencia de
2, así los sistemas con base 4, 8, 16, 32 … serían idóneos. El sistema de base 4 está muy
próximo al base 2, por ello no se utiliza el de base 32 y superiores se encuentran muy
alejados del base 10 y necesitan gran cantidad de símbolos adicionales, por lo que
tampoco son de utilidad, así que los sistemas de base 8 y sobretodo base 16 son los que
se utilizan como sistemas de apoyo.
9
Dado que el sistema de numeración en base 16 o hexadecimal debe contener 16
símbolos diferentes se han añadido las 6 primeras letras del alfabeto.
CÓDIGOS BINARIOS
Se puede definir como código como una colección de símbolos y reglas que
permite formular e identificar cierta información. Cuando dicha colección simbólica
está formada por agrupaciones de bits, un bit es el acrónimo de Ŗbinary digitŗ y
solamente puede tomar dos valores, el código se denomina binario.
Los códigos, tanto binarios o no, sirven para representar no sólo cantidades,
también para representar caracteres alfabéticos, de control, etc.
El número de códigos binarios que se pueden diseñar son infinitos, tan solo hace
falta asignar una determinada combinación de 1řs y 0řs a cada elemento a representar.
Un hecho más importante es saber cuantos elementos se pueden representar con una
determinada cantidad bits.
Uno de los códigos binarios mas utilizados en el que utiliza el como base el
sistema binario, a este código se le denomina código binario natural, y presenta
innumerables ventajas a la hora de realizar operaciones aritméticas frente a otros
códigos binarios, y como ya se menciono anteriormente, es de utilización prácticamente
general en los sistemas digitales electrónicos. No obstante en muchas aplicaciones es
preferible la utilización de otro tipo de código que se adapte mejor a las necesidades
específicas.
10
La utilización en los sistemas digitales electrónicos de los códigos binarios viene
dada por la facilidad, anteriormente expuesta, de obtener dos estados perfectamente
diferenciados y estables en los transistores que lo componen.
Definiciones
Combinación adyacente
Distancia de un código
Se define la distancia de un código como el menor número de bits que hay que
cambiar en cualquier combinación para obtener otra del código
Código continuo
Código cíclico
Códigos decimales codificados en binario (BCD) (Binary Code for Decimal digits)
Códigos ponderados
Son aquellos en los que cada posición se le puede asignar un peso, es decir,
conociendo los pesos de cada posición se puede descodificar cada combinación.
La expresión siguiente nos da el valor de cada combinación
Códigos autocomplementarios
Códigos alfanuméricos
Son aquellos que se utilizan para representar tanto cantidades como caracteres
alfabéticos y de control.
11
Códigos redundantes
Aquellos códigos con distancia superior a 2 pueden diseñarse de tal forma que al
cambiar un bit la nueva combinación solamente sea adyacente a una del código,
este código podrá evidentemente detectar el bit que ha sido erróneo y corregirlo,
estos tipos de códigos son denominados correctores de error. En general para
detectar errores de n bits en una combinación hace falta que la distancia del
código sea 2n+1
Código Gray
El código Gray o reflejado es cíclico, su interés deriva principalmente de que es
muy fácil de generar así como su conversión en binario natural en la tabla 5 se puede
observar este código para distintos tamaños.
Para pasar de binario natural a Gray, basta con observar que el bit más
significativo es igual, el siguiente más significativo es igual si el número de unos es par
y el inverso si es impar, y así para cada bit, el circuito que es capaz de realizar esta
función se verá en capítulos posteriores
12
Tabla 5
1 BIT 2 BIT 3 BIT 4 BIT
0 00 000 0000
1 01 001 0001
- 011 0011
11 010 0010
10 -- 0110
110 0111
111 0101
101 0100
100 ---
1100
1101
1111
1110
1010
1011
1001
1000
figura 5
En el primer caso las lecturas podrían ser 001, 010 que se corresponderían con la
realidad, pero también podrían ser 011 ó 000 que evidentemente son lecturas erróneas.
En el segundo disco, las lecturas pueden ser únicamente 001 ó 011, que
corresponden a la realidad, ya que solamente difieren en un bit.
13
Código Progresivo Johnson
Este código al igual que el Gray es un código cíclico, en la tabla 6 se pueden
observar los correspondientes a 4 y 5 bits, al igual que el Gray puede utilizarse para la
codificación de valores analógicos, pero dado que la capacidad es menor, ya que con n
bits solamente se puede codificar 2xn situaciones, no se suele emplear. Sin embargo,
dado que la generación de este código es muy sencilla y permite obtener de los circuitos
que lo generan la máxima velocidad suele utilizarse en la codificación de máquinas de
estado y en contadores rápidos.
Tabla 6
Decimal Códigos Johnson
Cuatro bits Cinco bits
0 0000 00000
1 0001 00001
2 0011 00011
3 0111 00111
4 1111 01111
5 1110 11111
6 1100 11110
7 1000 11100
8 11000
9 10000
14
0řs y viceversa se obtiene la combinación que representa el complemento a nueve de la
inicial, así el 4 se representa como 0100, su complemento es 1011 que corresponde al 5.
Tabla 7
Códigos BCD ponderados
Dígitos decimales Binario natural Aiken
8421 2421
0 0000 0000
1 0001 0001
2 0010 0010
3 0011 0011
4 0100 0100
5 0101 1011
6 0110 1100
7 0111 1101
8 1000 1110
9 1001 1111
Tabla 8
Dígito decinal BCD binario natural BCD exceso 3
0 0000 0011
1 0001 0100
2 0010 0101
3 0011 0110
4 0100 0111
5 0101 1000
6 0110 1001
7 0111 1010
8 1000 1011
9 1001 1100
Código ASCII
El código ASCII (American Standard Code for Information Interchange), se
pronuncia como as-ki, ASCII es un estándar de representar caracteres y símbolos en
forma electrónica. Usar estándares aumenta la eficiencia y elimina errores, requiere
15
disciplina y a veces restringe la creatividad. Sin embargo, es muy útil para la
comunicación entre usuarios. Internet requiere aún más enfoque en estándares, porque
se trata en muchos casos de usuarios de idiomas diferentes. Las personas que tuvieron la
visión de internet, trataron de establecer una plataforma de comunicación global. Usar
estándares es una forma de cumplir este objetivo.
El código ASCII utiliza 7-bit que sustituyen las letras del alfabeto romano, cifras
y otros caracteres de control. Con 7 bits se pueden representar 27 = 128 caracteres
diferentes, con lo que se pueden representar mayúsculas, minúsculas caracteres
numéricos y de control.
Tabla 9
ASCII Hex Símbolo ASCII Hex Símbolo ASCII Hex Símbolo ASCII Hex Símbolo
ASCII Hex Símbolo ASCII Hex Símbolo ASCII Hex Símbolo ASCII Hex Símbolo
64 40 @ 80 50 P 96 60 ` 112 70 p
65 41 A 81 51 Q 97 61 a 113 71 q
66 42 B 82 52 R 98 62 b 114 72 r
67 43 C 83 53 S 99 63 c 115 73 s
68 44 D 84 54 T 100 64 d 116 74 t
69 45 E 85 55 U 101 65 e 117 75 u
70 46 F 86 56 V 102 66 f 118 76 v
71 47 G 87 57 W 103 67 g 119 77 w
72 48 H 88 58 X 104 68 h 120 78 x
73 49 I 89 59 Y 105 69 i 121 79 y
74 4A J 90 5A Z 106 6A j 122 7A z
75 4B K 91 5B [ 107 6B k 123 7B {
76 4C L 92 5C \ 108 6C l 124 7C |
77 4D M 93 5D ] 109 6D m 125 7D }
78 4E N 94 5E ^ 110 6E n 126 7E ~
79 4F O 95 5F _ 111 6F o 127 7F •
16
La tabla 9 presenta el código ASCII de 7 caracteres. Es usual además la
utilización de un octavo bit, para detectar posibles errores de transmisión o grabación.
Si el octavo bit se emplea para representar más caracteres como letras griegas y
símbolos semigráficos, se tiene el denominado ASCII Extendido, usado en el PC de
IBM y en microordenadores compatibles. En la tabla 10, se puede observar ese juego de
caracteres
Tabla 10
ASCII Hex Símbolo ASCII Hex Símbolo ASCII Hex Símbolo ASCII Hex Símbolo
ASCII Hex Símbolo ASCII Hex Símbolo ASCII Hex Símbolo ASCII Hex Símbolo
17
Código EBCDIC
El Sistema de las computadoras IBM 390 y computadoras de gran porte usan su
propio juego de códigos, llamado EBCDIC. Es un código similar al ASCII, en la tabla
11, se presenta este juego de caracteres.
Tabla 11
Decimal | Hexadecimal | Carácter Decimal | Hexadecimal | Carácter
129 81 a 194 C2 B
130 82 b 195 C3 C
131 83 c 196 C4 D
132 84 d 197 C5 E
133 85 e 198 C6 F
134 86 f 199 C7 G
135 87 g 200 C8 H
136 88 h 201 C9 I
137 89 i 209 D1 J
145 91 j 210 D2 K
146 92 k 211 D3 L
147 93 l 212 D4 M
148 94 m 213 D5 N
149 95 n 214 D6 O
150 96 o 215 D7 P
151 97 p 216 D8 Q
152 98 q 217 D9 R
153 99 r 226 E2 S
162 A2 s 227 E3 T
163 A3 t 228 E4 U
164 A4 u 229 E5 V
165 A5 v 230 E6 W
166 A6 w 231 E7 X
167 A7 x 232 E8 Y
168 A8 y 233 E9 Z
169 A9 z 64 40 Esp.
blanco
240 F0 0 75 4B .
241 F1 1 76 4C <
242 F2 2 77 4D (
243 F3 3 78 4E +
244 F4 4 79 4F |
245 F5 5 80 50 &
246 F6 6 90 5A !
247 F7 7 91 5B $
248 F8 8 92 5C *
249 F9 9 93 5D )
122 7A : 94 5E ;
123 7B # 96 60 -
124 7C @ 97 61 /
125 7D ' 107 6B ,
126 7E = 108 6C %
127 7F " 109 6D _
193 C1 A 110 6E >
111 6F ?
18
Unicode
Se usa en las computadoras bajo Windows NT. IE4 y Netscape, su uso se está
extendiendo. El Unicode versión beta 3.2 contiene decenas de miles de caracteres de
los utilizados en los lenguajes más importantes del mundo. Además de letras y números,
el Unicode incluye puntuación, símbolos matemáticos y técnicos, formas geométricas,
caracteres gráficos y modelos del Braille. Unicode contiene el código ASCII como un
subconjunto.
Unicode presenta un código único para cada símbolo, sin importar la plataforma
o el idioma en que se trabaje. Los códigos anteriores ASCII o EBCDIC contemplan
multitud de variantes, en función del idioma, por lo que pueden aparecer caracteres con
códigos repetidos o viceversa.
Código 7 segmentos
Este código es el utilizado para representar cantidades en los visualizadores de 7
segmentos, realizados en su mayoría mediante diodos electro luminiscentes (LED).
Puede presentarse en las variantes BCD y hexadecimal. En la figurra 6 se puede
observar el visualizador de 7 segmentos y en la tabla 12, se puede el código para la
versión hexadecimal, para BCD, solamente serían válidas las 10 primeras
combinaciones
Tabla 12
Dígito hexadecimal Código 7 segmentos
GFEDCBA
0 011111111
1 000000110
2 101110111
3 001111111
4 110011110
5 110111101
6 111111101
7 000000111
8 111111111
9 110011111
A 111101111
B 111111100
C 011111001
D 101111110
E 111111001
F 111110001
19
figura 6
CODIGOS REDUNDANTES
Una de las formas más sencillas de obtener un código que tenga distancia 2 es la
siguiente: a partir de un código de distancia 1, se le añade un nuevo bit. Este bit hará
que el número de 1řs de la combinación sea par o impar, denominándose
respectivamente código de paridad par o impar.
20
En la tabla 13 se pueden observar distintos tipos de códigos con paridad,
generados a partir de códigos de distancia unidad. En donde se ha añadido el bit de
paridad como bit menos significativo.
Tabla 13
BCD binario natural BCD Aiken
Dígito decimal
Paridad par Paridad impar
0 00000 00001
1 00011 00010
2 00101 00100
3 00110 00111
4 01001 01000
5 01010 10110
6 01100 11001
7 01111 11010
8 10001 11100
9 10011 11111
Código de 2 entre 5
Este código además de ser un código de paridad, es un código de peso constante,
por lo que la distancia del código también es superior a 1 por lo tanto puede utilizarse
como código detector de error de 1 bit.
Tabla 14
Dígito decimal Código de 2 entre 5
0 01100
1 11000
2 10100
3 10010
4 01010
5 00110
6 10001
7 01001
8 00101
9 00011
Código Biquinario
Al igual que el código de 2 entre 5 el código biquinario es un código BCD, de paridad y
peso constante, pero además es un código ponderado, la utilización de este código es
similar al anterior. En la tabla 15 se puede observar este código.
21
Tabla 15
Código biquinario
Dígito decimal pesos
5043210
0 0100001
1 0100010
2 0100100
3 0101000
4 0110000
5 1000001
6 1000010
7 1000100
8 1001000
9 1010000
Estos códigos son utilizados cuando se envían una serie de combinaciones desde
un elemento transmisor a uno receptor. Se utiliza como base un código de distancia
unidad. El transmisor, a medida que envía la información al receptor va realizando una
serie de operaciones con los datos, estas consisten básicamente en:
g) Por parte del receptor, éste debe dividir T(y)/G(y) y el residuo debe ser 0, de
no ser así existe un error en la transmisión.
T(y) = 1001010101011101010101110000
G(y) = 10101
Grado de T(y) = 27; Grado de G(y)= 4
F(y) = 10010101010111010101011100000000
Resto de F(y)/G(y) = 1011
T(y) = F(y) - (Resto de F(y)/G(y))
T(y) = 10010101010111010101011011110101
Resto de T(y)/G(y) = 0
22
La realización de estas operaciones matemáticas no involucra una circuitería
especialmente grande, aunque se suelen utilizar en sistemas digitales de media o alta
complejidad.
En este tipo de códigos hay que cuidar el tamaño del bloque a transmitir, ya que
con bloques grandes, la seguridad es menor que con pequeños.
Códigos Hamming
Fue el primer tipo de código corrector de error descrito, data de 1.950, la idea
básica es añadir unos bits de redundancia, pero en lugar de hacerlo al principio o al final
es irlos intercalando entre los bits de información. Evidentemente esto hace que los bits
a transmitir sean más.
Al añadir al código base (k-n) n bits, debe cumplir la condición de que con estos
n bits se puedan detectar el posible error en una de estas k posiciones, así como la
ausencia de error en ellas, es decir, 2n≥ k + 1.
23
Tabla 16
n3n2n1 Bit erróneo
0 0 0 Ninguno
0 0 1 1
0 1 1 2
0 1 0 3
1 1 0 4
1 1 1 5
1 0 1 6
1 0 0 7
Así se tomarán b1, b3 y b7 como los bits redundantes ya que son los más fáciles
de generar, y b2, b4, b5 y b6 como los bits del código original. En la tabla 17, se puede
observar el código Gray para 4 bits, el valor de los bits redundantes y el código
Hamming que tiene asociado
Tabla 17
Valor Código Gray Bits redundantes Código Hamming
decimal
Posición final
6542 731 7654321
0 0000 000 0000000
1 0001 011 0000111
2 0011 101 1001011
3 0010 110 1001100
4 0110 001 0011001
5 0111 011 0011111
6 0101 100 1010010
7 0100 111 1010101
8 1100 010 0110100
9 1101 001 0110011
10 1111 111 1111111
11 1110 100 1111000
12 1010 011 0101101
13 1011 000 0101010
14 1001 110 1100110
15 1000 101 1100001
24
respectivamente de la combinación final. Como n1=b1, b1 tendrá que tomar el valor 1 si
la combinación no es correcta, como b1 es función de b2, b5 y b6 y estos deben tomar
el valor 1, 1 y 0 respectivamente, y si uno de los bits cambia, la combinación deja de
tener un número par de unos para tener un número impar, para mantener la paridad par,
n1=b1, debe tomar el valor 0. De esta manera se completan todos los valores de la
columna de los bits redundantes. En temas posteriores se realizará una justificación más
detallada.
Tabla 18
Representación módulo argumental
Números positivos Números negativos
Decimal Binario Decimal Binario
0 0000 0 1000
1 0001 -1 1001
2 0010 -2 1010
3 0011 -3 1011
4 0100 -4 1100
5 0101 -5 1101
6 0110 -6 1110
7 0111 -7 1111
25
NOTACIÓN EN COMPLEMENTO A 2
En esta forma de representar cantidades con signo se mantiene el criterio del
argumento, un 1 para los números negativos y un 0 para los positivos. Si bien los
números positivos se representan con el mismo criterio que en la notación módulo
argumental, los números negativos se representan mediante el complemento a la base
2n, es decir, hay que restar a 2n el valor positivo de la cantidad. Un ejemplo aclarará lo
anterior
Tabla 19
Representación en complemento a 2
Números positivos Números negativos
Decimal Binario Decimal Binario
0 0000 -1 1111
1 0001 -2 1110
2 0010 -3 1101
3 0011 -4 1100
4 0100 -5 1011
5 0101 -6 1010
6 0110 -7 1001
7 0111 -8 1000
1ª)
1º) Se parte del valor en positivo
2º) Partiendo del bit menos significativo se dejan todos iguales hasta que aparece
el primer 1, que también queda igual
3º) A partir de este bit se cambian los 1řs por 0řs y los 0`s por 1řs
2ª)
1º) Se parte del valor en positivo
26
Las magnitudes representables con n bits van desde Ŕ(2n-1) a + (2n-1 -1). Como se
verá en capítulos posteriores la ventaja de este tipo de representación estriba en que es
más fácil la realización de operaciones aritméticas mediante circuitos electrónicos
digitales, es el formato más utilizado para representar cantidades enteras.
NOTACIÓN EN COMPLEMENTO A 1
Esta forma de representación es similar a la de notación de complemento a dos,
la diferencia estriba en que no se realiza el complemento a la base 2n, si no a 2n-1 en la
tabla 20, se muestra la representación de números con esta notación, en la que se puede
observar que con n bits significativos más 1 bit de signo se pueden representar
cantidades entre Ŕ(2n-1-1) y +(2n-1-1).
La forma de obtener las cantidades negativas consiste en cambiar los 1řs por 0řs y los
0řs por 1řs en la combinación correspondiente al número positivo.
Tabla 20
Representación en complemento a 2
Números positivos Números negativos
Decimal Binario Decimal Binario
0 0000 0 1111
1 0001 -1 1110
2 0010 -2 1101
3 0011 -3 1100
4 0100 -4 1011
5 0101 -5 1010
6 0110 -6 1001
7 0111 -7 1000
27
Para la parte fraccionaria desde 0 (0,000000) hasta el valor 1-2-6 =0,984375
(0,111111)
234,61510 = 0 011101010,100112
315,76 = 0 0100111011,110000
-315,76 = 1 1011000100,001111
28
La base esta de forma implícita, por lo que no es necesario indicarla ya que, es la
misma para todas las cantidades.
El valor del exponente se almacena en los bits comprendidos entre las posiciones
23 y 30, 8 bits, existen varias formas para representar el valor del exponente, el más
usual es el denominado Ŗsesgadoŗ que consiste en sesgar las 2n combinaciones posibles
(en el ejemplo 256) a 2n-1 -1 (en el ejemplo 127), con lo que los posibles valores van
desde -2n-1 +1( en el ejemplo -127, correspondiente a la combinación 00000000) hasta
2n-1 (en el ejemplo 128 correspondiente a la combinación 11111111), aunque estos dos
valores, como se verá en la tabla 22 representan otras situaciones
29
-987,6 = -(1111011011,10011001100110) =
= -(1,11101101110011001100100*29)
-0,07 = -(0,000100011110101110000101001) =
= -(1,00011110101110000101001*2-4)
Cuando los números a representar son cantidades muy grandes o muy pequeñas, la
forma de encontrar el valor puede hacerse de la siguiente manera:
30
Redondeos
A diferencia de los números enteros, es difícil que un número real pueda ser
representado exactamente con un número fijo de cifras binarias significativas en su
mantisa (nm+1). Para solucionar este problema debemos aplicar algún tipo de
aproximación o redondeo. El formato IEEE 754 utiliza el denominado redondeo al par
que consiste en redondear a un número par en el caso en el que el error sea igual si se
aproxima al número representable inmediatamente superior y al inmediatamente
inferior. Si no se da esta igualdad, obviamente, y como es lógico, simplemente se
redondea al número representable más cercano.
Para decidir si se suma uno o se trunca es necesario analizar el bit menos significativo
(que se encuentra en la posición -nm del campo de la mantisa) y dos bits adicionales no
pertenecientes al número final, denominados bit de redondeo y bit retenedor: El bit de
redondeo es aquel que, como resultado de una operación y después de normalizar el
resultado, se encuentra en la posición -(nm+1). El bit retenedor es, en iguales
circunstancias, el que está a su derecha, en la posición -(nm+2). Veamos como se
realiza el redondeo al par con un ejemplo:
Supóngase que la mantisa de los datos se almacena en 5 bits (nm=5). Los redondeos al
par que se obtendrían de las operaciones de la ALU que siguen son los que se indican:
figura 8
31
figura 9
Hay que hacer notar que el número cero no es representable, sin embargo se
incluye una representación para este número en representaciones en coma flotante como
se verá en el apartado siguiente.
En la figura 10, se presenta la distribución de los valores en la recta real, hay que
hacer notar que la distribución no es uniforme a lo largo de la misma, habiendo mas
precisión en los valores pequeños que en los grandes, con lo que se mantiene la
precisión relativa.
figura 10
32
números representados a costa de la precisión. Si lo que se aumenta es el número de bits
de la mantisa lo que ocurre es que se aumenta la precisión a costa de disminuir el rango,
ya que el número de puntos representables en ambos casos es el mismo. Por lo tanto
para aumentar tanto el rango como la precisión la única solución es aumentar el número
de bits totales.
Tabla 22
Simple precisión Doble precisión
Signo Exp. Fracc. Valor Signo Exp Fracc. Valor
Cero positivo 0 0 0 0 0 0 0 0
Cero negativo 1 0 0 -0 1 0 0 -0
Más infinito 0 255 0 ∞ 0 2047 0 ∞
Menos infinito 1 255 0 -∞ 0 2047 0 -∞
NaN silencioso 0ó1 255 ≠0 NaN 0ó1 2047 ≠0 NaN
NaN indicador 0ó1 255 ≠0 NaN 0ó1 2047 ≠0 NaN
Positivo normalizado≠0 0 0..255 f 2e-127 0 0..2047 f 2e-1023
Negativo normalizado≠0 1 0..255 f -2e-127 1 0..2047 f -2e-1023
Positivo desnormalizado 0 0 f≠0 2e-126 0 0 f≠0 2e-1022
Negativo desnormalizado 1 0 f≠0 -2e-126 1 0 f≠0 -2e-1022
La mantisa tiene implícito un 1 como bit más significativo, por lo que las
mantisas representan cantidades comprendidas entre 0,5 y 1 con 24 y 53 bits
para los formatos simple y doble.
33
Un exponente 0 junto con una parte fraccionaria 0 representa al 0,
positivo o negativo en función del signo.
Un exponente todos 1řs junto con una parte fraccionaria distinta de 0`s
recibe el nombre de NaN (Not a Number).
Campo del exponente: A veces se utiliza como base la base 16, siendo el rango
de los valores almacenados mucho más grande que si utilizamos la base 2, para
una misma longitud de bits ne asignada (aunque veremos que disminuye la
precisión en los datos): Para un mismo valor de longitud del campo del
exponente se cumple que 16Emax >2Emax. Otra variación que suele haber es el sesgo:
En muchos sistemas se utiliza un exponente también sesgado, aunque con un
sesgo una unidad superior que en el caso de IEEE 754: S=2ne-1
34