Está en la página 1de 58

ESTRUCTURA DE COMPUTADORES

Tema 2: Representación de la información en los computadores

GRADO EN INGENIERÍA INFORMÁTICA


GRADO EN INGENIERÍA DE COMPUTADORES

Luis Rincón
Índice

1. Introducción.
2. Sistemas de representación numérica.
3. Aritmética binaria.
4. Sistemas de representación en coma fija.
5. Sistemas de representación en coma flotante.
6. Representación de caracteres alfanuméricos.
7. Representación de datos numéricos: texto frente a binario.
Bibliografía

[PAT] D.A. PATTERSON, J.L. HENNESSY. Computer Organization and Design, 5th
ed. Morgan Kaufmann, 2014 (o la traducción española más reciente: Estructura y
Diseño de Computadores, 4ª ed. Reverté, 2011).

[PRI] A. PRIETO, A. LLORIS, J.C. TORRES. Introducción a la Informática. 4ª


edición, McGraw-Hill, 2006.

[CER] C. CERRADA, V. FELIU. Estructura y Tecnología de Computadores I. U.N.E.D.,


1993.

[DMI] P. DE MIGUEL. Fundamentos de los Computadores. 9ª edición. Paraninfo,


2006.

[STA] W. STALLINGS. Organización y Arquitectura de Computadores. 7ª edición,


Prentice Hall, 2006.
Índice

1. Introducción.
2. Sistemas de representación numérica.
3. Aritmética binaria.
4. Sistemas de representación en coma fija.
5. Sistemas de representación en coma flotante.
6. Representación de caracteres alfanuméricos.
7. Representación de datos numéricos: texto frente a binario.
Introducción
Codificación de la información digital

• Bit (bi nary digit ): unidad mínima de información. Dos valores: 0 y 1.


• Información: grupos o secuencias de bits.
 Palabra: tamaño de referencia del computador.
 Octeto, carácter o byte : 8 bits.
• Codificación: establece las reglas que definen la correspondencia
entre cada elemento de información y la secuencia de bits que
constituye su código.
 Codificación directa.
 Codificación por campos.
 Codificación por secuencias de códigos.
Índice

1. Introducción.
2. Sistemas de representación numérica.
3. Aritmética binaria.
4. Sistemas de representación en coma fija.
5. Sistemas de representación en coma flotante.
6. Representación de caracteres alfanuméricos.
7. Representación de datos numéricos: texto frente a binario.
Sistemas de representación numérica
Bases de representación

• Sistemas de representación numérica: constan de


 Dígitos o cifras.
 Reglas para operar (sumas, restas, etc).
• Base (b) de un sistema de numeración: número de dígitos del sistema
utilizado.
• Bases más utilizadas:
 Binaria (base 2) → {0,1}
 Hexadecimal (base 16) → {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F}
 Octal (base 8) → {0, 1, 2, 3, 4, 5, 6, 7}
 Decimal (base 10) → {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}: para los humanos.
• Los sistemas de numeración son posicionales.
Sistemas de representación numérica
Ejemplo: conversión decimal → binario: 19,3

Parte entera: (19)10 Parte fraccionaria: (0,3)10


0,3 × 2
19 2 a-1 0 0,6 × 2
a0 1 9 2 a-2 1 0,2 × 2
a1 1 4 2 a-3 0 0,4 × 2
a2 0 2 2 a-4 0 0,8 × 2
a3 0 1 a4 a-5 1 0,6 × 2
a-6 1 0,2 × 2
(19)10 = (10011)2=(16+2+1) 10 a-7 0 0,4 × 2
a-8 0 0,8 × 2
a-9 1 0,6 × 2
Resultado final:
... ...
19,310 =
(0,3)10 = (0,010011001...)2
10011,010011001…2
Sistemas de representación numérica
Ejemplo: conversión binario → decimal: 10011,0100110012

p -1
N= ∑ i
a
i=−q
⋅ b i

N = 1·24 + 0·23 + 0·22 + 1·21 + 1·20 + 0·2-1 +


1·2-2 + 0·2-2 + 0·2-3 + 0·2-4 + 1·2-5 + 1·2-6 + 0·2-7
+ 0·2-8 + 1·2-9 = 19,29882812510 ≈ 19,310
Sistemas de representación numérica
Equivalencia entre decimal, binario, octal y hexadecimal

Decimal 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

Binario 0 1 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111 10000

Octal 0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 20

Hexadecimal 0 1 2 3 4 5 6 7 8 9 A B C D E F 10
Índice

1. Introducción.
2. Sistemas de representación numérica.
3. Aritmética binaria.
4. Sistemas de representación en coma fija.
5. Sistemas de representación en coma flotante.
6. Representación de caracteres alfanuméricos.
7. Representación de datos numéricos: texto frente a binario.
Aritmética binaria
Suma y resta

• Las operaciones aritméticas de suma y resta en binario se realizan según


tablas más sencillas que las equivalentes en el sistema decimal.
Suma binaria Resta binaria
A RESTA A
SUMA acarreo BINARIA 0 1
BINARIA 0 1 (-)
(+)
0 0 1
0 0 1 B
B 1 11 0
1 1 10
acarreo
1 acarreos 1 1 1 83 1 0 1 0 0 1 1 minuendo
9 1 0 0 1
15 + 1 1 1 1 - 21 - 1 0 1 0 1 sustraendo
+ acarreos 1 1 1 1
24 1 1 0 0 0 62 0 1 1 1 1 1 0 diferencia
Aritmética binaria
Producto

PRODUCTO A 12 1 1 0 0 multiplicando
BINARIO 0 1
(×) × 6 × 1 1 0 multiplicador
0 0 0 72 0 0 0 0
B
1 0 1 1 1 0 0 productos
parciales
1 1 0 0
1 0 0 1 0 0 0 resultado
M 64 + 8 = 72
× m
R M3 M2 M1 M0 multiplicando
× m2 m1 m0 multiplicador
M3·m0 M2 ·m0 M1 ·m0 M0 ·m0
productos
M3·m1 M2 ·m1 M1 ·m1 M0 ·m1 parciales
M3·m2 M2 ·m2 M1 ·m2 M0 ·m2
R6 R5 R4 R3 R2 R1 R0 resultado
Aritmética binaria
División

• Cálculo de los dígitos del cociente:


– Si dividendo parcial ≥ divisor → el siguiente dígito del cociente es 1.
– Si dividendo parcial < divisor → el siguiente dígito del cociente es 0.

112 8 dividendo 1 1 1 0 0 0 0 1 0 0 0 divisor

0 14 - 1 0 0 0 1 1 1 0 cociente

0 1 1 0 0
- 1 0 0 0
restos parciales 0 1 0 0 0
- 1 0 0 0
0 0 0 0 0
- 0 0 0 0
0 0 0 0 resto final
Índice

1. Introducción.
2. Sistemas de representación numérica.
3. Aritmética binaria.
4. Sistemas de representación en coma fija.
5. Sistemas de representación en coma flotante.
6. Representación de caracteres alfanuméricos.
7. Representación de datos numéricos: texto frente a binario.
Sistemas de representación en coma fija
Binario puro (repaso)

• Sólo sirve para números positivos.


• Valor de un entero dado en binario puro:
n-1
=A ∑ i
a
i= 0
⋅ 2i

• Rango: [0, 2n-1].


• Cambio de signo: no se puede hacer.
• Extensión de signo: poner ceros delante.
• Desbordamiento en sumas o restas: cuando se produce
un acarreo de orden superior.
Sistemas de representación en coma fija
Módulo y signo o signo-magnitud (repaso)

• El primer bit representa el signo y los n-1 restantes


codifican el módulo.
– Números positivos: bit de signo = 0.
– Números negativos: bit de signo = 1.
• Valor de un entero dado en módulo y signo:
n-2
A= (-1) an-1
⋅ ∑ ai ⋅ 2i
i= 0
• Rango: [-(2n-1-1), 2n-1-1].
• Cambio de signo: invertir el bit de signo.
• Extensión de signo: poner ceros entre el bit de signo y
los bits de módulo.
• Desbordamiento en sumas o restas: cuando hay acarreo
de orden superior al operar con los módulos.
Sistemas de representación en coma fija
Complemento a 1 (repaso)

• Números positivos: igual que en módulo y signo (primer bit a 0).


• Números negativos: se pone el número en positivo y se le hace el
complemento a 1.
 Complemento a 1 de A: 2n-1-A.
 Hacer esta resta equivale a invertir todos los bits.
• Valor de un entero dado en complemento a 1:
n-2
A= (-1)an-1 ⋅ ∑ (ai ⊕ an-1 ) ⋅ 2i
i= 0
• Rango: [-(2n-1-1), 2n-1-1].
• Cambio de signo: complementación.
• Extensión de signo: replicar el bit de signo.
• Restas: se hacen sumando el minuendo con el complemento a 1 del
sustraendo.
• Problema: a veces las sumas y las restas salen mal y hay que
corregir el resultado.
Sistemas de representación en coma fija
Complemento a 2 (repaso)

• Números positivos: igual que en módulo y signo (primer bit a 0).


• Números negativos: se pone el número en positivo y se le hace el
complemento a 2.
 Complemento a 2 de A: 2n-A.
 Hacer esta resta equivale a invertir todos los bits y sumar 1 al resultado.
 También equivale a copiar los bits el número de derecha a izquierda
hasta encontrar un 1, y después invertirlos todos.
• Valor de un entero dado en complemento a 2:
n-2
A -an-1·2n-1 + ∑ ai ⋅ 2i
=
i= 0
• Rango: [-2n-1, 2n-1-1].
• Cambio de signo: complementación.
• Extensión de signo: replicar el bit de signo.
• Restar: sumar el minuendo con el complemento a 2 del sustraendo.
– Este método también vale para hacer restas de números en
binario puro: la combinación binaria obtenida es idéntica.
Sistemas de representación en coma fija
Exceso a M o representación sesgada

• Exceso o sesgo (bias): cantidad que se suma a un número antes de


pasarlo a binario para su representación.
• Normalmente el sesgo está relacionado con la precisión (ancho del
dato). Opciones habituales:
 Sesgo = 2n-1.
 Sesgo = 2n-1 - 1.
• Valor de un entero dado en exceso a M:
n-1
A= ∑ i −M
a ⋅
i= 0
2i

• Rango: [-M, 2n-1-M].


• Cambio de signo: no es obvio.
• Extensión de signo: no se hace.
• Sumas: después hay que restar el sesgo.
• Restas: después hay que sumar el sesgo.
Sistemas de representación en coma fija
Cuadro resumen de coma fija
Índice

1. Introducción.
2. Sistemas de representación numérica.
3. Aritmética binaria.
4. Sistemas de representación en coma fija.
5. Sistemas de representación en coma flotante.
6. Representación de caracteres alfanuméricos.
7. Representación de datos numéricos: texto frente a binario.
Sistemas de representación en coma flotante
Notación científica y normalización

• Notación científica: usado por los científicos para cantidades


numéricas.
– Elementos: base (b = 10) / mantisa (M, en coma fija) / exponente (exp,
entero).
– X = M · bexp = M · 10exp
– Ejemplos:
X = -298,823 · 10-25, Y = 9,253662 · 103, Z = 0,003157 · 10-4, V = -8046,44 · 1019
• Normalización: poner la coma de la mantisa en una posición dada.
• Normalizaciones más frecuentes:
– Coma a la derecha del dígito más significativo (1 ≤ |M| < b)
 X = -298,823 · 10-25 = -2,98823 · 10-23
 Y = 9,253662 · 103 ya está normalizado
 Z = 0,003157 · 10-4 = 3,157 · 10-7
 V = -8046,44 · 1019 = -8,04644 · 1022
– Coma a la izquierda del dígito más significativo (0 < |M| < 1)
 X = -298,823 · 10-25 = -0,298823 · 10-22
 Y = 9,253662 · 103 = 0,9253662 · 104
 Z = 0,003157 · 10-4 = 0,3157 · 10-6
 V = -8046,44 · 1019 = -0,804644 · 1023
Sistemas de representación en coma flotante
Características de los sistemas de coma flotante

• Coma flotante (floating point): notación científica expresada en base 2.


X = M · 2exp = (-1)s · |M| · 2exp
– M: coma fija, con mantisa fraccionaria normalizada.
 Números positivos: s=0 / números negativos: s=1.
– Exponente (exp): entero en coma fija.
• Normalizaciones más frecuentes para la mantisa:
– Coma a la izquierda del bit más significativo (0 < |M| < 1): 0,1xxxx…
– Coma a la derecha del bit más significativo (1 ≤ |M| < 2): 1,xxx…
• Bit implícito: no se guarda internamente porque se sabe cuál es su
posición y valor.
• Rango: [-Mn · 2Exp, -mn · 2exp] ∪ [mp · 2exp, Mp · 2Exp]
– Hueco de cantidades no representables alrededor del 0 (incluido el propio 0):
(-mn · 2exp, mp · 2exp)
Sistemas de representación en coma flotante
IEEE 754 precisión simple (32 bits)

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
S EXPONENTE MANTISA

(–1)s × 1,m × 2exp–127 si 0 < exp < 255

(–1)s × 0,m × 2–126 si exp = 0 (caso desnormalizado)

0 si exp = m = 0
N=
+∞ si exp = 255, m = 0, s = 0

–∞ si exp = 255, m = 0, s = 1

NaN (“Not a Number”) si exp = 255, m ≠ 0

s = signo de la mantisa
m = módulo de la mantisa almacenada (sin bit implícito)
exp = exponente almacenado (sin descontar exceso)
Sistemas de representación en coma flotante
IEEE 754 precisión doble (64 bits)

63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32
S EXPONENTE MANTISA

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
MANTISA (CONTINUACIÓN)

(–1)s × 1,m × 2exp–1023 si 0 < exp < 2047

(–1)s × 0,m × 2–1022 si exp = 0 (caso desnormalizado)

0 si exp = m = 0
N=
+∞ si exp = 2047, m = 0, s = 0

–∞ si exp = 2047, m = 0, s = 1

NaN (“Not a Number”) si exp = 2047, m ≠ 0


s = signo de la mantisa
m = módulo de la mantisa almacenada (sin bit implícito)
exp = exponente almacenado (sin descontar exceso)
Sistemas de representación en coma flotante
Ejemplo de conversión de IEEE 754 precisión simple a base 10

N = C0A0000016,IEEE754,s =
= 1100 0000 1010 0000 0000 0000 0000 00002,IEEE754,s

s exp m

1. Bit de signo: s = 1 (nº negativo)


2. Exponente: exp = 100000012,exc.127 = 12910,exc.127 = 12910 – 12710 = 210
3. Mantisa: 1,01000000000000000000002 = 20 + 2–2 = 1,2510
4. Resultado: N = – 1,25 × 22 = –5
Sistemas de representación en coma flotante
Ejemplo de conversión de IEEE 754 precisión simple a base 10

N = 4237000016,IEEE754,s =
= 0100 0010 0011 0111 0000 0000 0000 00002,IEEE754,s

s exp m

1. Bit de signo: s = 0 (nº positivo)


2. Exponente: exp = 100001002,exc.127 = 13210,exc.127 = 13210 – 12710 = 510
3. Mantisa: 1,011011100000000000000002 = 20+2–2+2–3+2–5+2–6+2–7 = 1,4335910
4. Resultado: N = 1,43359 × 25 = 45,875
Sistemas de representación en coma flotante
Ejemplo de conversión de IEEE 754 precisión simple a base 10

N = C425A00016,IEEE754,s =
= 1100 0100 0010 0101 1010 0000 0000 00002,IEEE754,s

s exp m

1. Bit de signo: s = 1 (nº negativo)


2. Exponente: exp = 100010002,exc.127 = 13610,exc.127 = 13610 – 12710 = 910
3. Mantisa: 1,010010110100000000000002 = 1,2939510
4. Resultado: N = – 1,29395 × 29 = –662,5
Sistemas de representación en coma flotante
Ejemplo de conversión de IEEE 754 precisión simple a base 10

N = 004B000016,IEEE754,s =
= 0000 0000 0100 1011 0000 0000 0000 00002,IEEE754,s

s exp m

1. Bit de signo: s = 0 (nº positivo)


2. Exponente: exp = 000000002,exc.127 ⇒ CASO ESPECIAL: NO HAY BIT
IMPLÍCITO EN LA MANTISA
3. Mantisa: 0,100101100000000000000002 = 0,585937510
4. Resultado: N = 0,5859375 × 2-126 = 6,88766 × 10-39
Sistemas de representación en coma flotante
Ejemplo de conversión de IEEE 754 precisión simple a base 10

N = 8000000016,IEEE754,s =
= 1000 0000 0000 0000 0000 0000 0000 00002,IEEE754,s

s exp m

1. Bit de signo: s = 1 (nº negativo)


2. Exponente: exp = 000000002,exc.127 ⇒ CASO ESPECIAL: NO HAY BIT
IMPLÍCITO EN LA MANTISA
3. Mantisa: 0,000000000000000000000002 = 010
4. Resultado: N = 0
Sistemas de representación en coma flotante
Ejemplo de conversión de IEEE 754 precisión simple a base 10

N = 7F80000016,IEEE754,s =
= 0111 1111 1000 0000 0000 0000 0000 00002,IEEE754,s

s exp m

1. Bit de signo: s = 0 (nº positivo)


2. Exponente: exp = 111111112,exc.127 ⇒ CASO ESPECIAL: ±∞ o NaN
3. Mantisa: 000000000000000000000002
4. Resultado: N = +∞
Sistemas de representación en coma flotante
Ejemplo de conversión de IEEE 754 precisión simple a base 10

N = FF80040016,IEEE754,s =
= 1111 1111 1000 0000 0100 0000 0000 00002,IEEE754,s

s exp m

1. Bit de signo: s = 1 (nº negativo)


2. Exponente: exp = 111111112,exc.127 ⇒ CASO ESPECIAL: ±∞ o NaN
3. Mantisa: 00000000100000000000000 NO NULA
4. Resultado: N = NaN -- Not a Number
Sistemas de representación en coma flotante
Ejemplo de conversión de base 10 a IEEE 754 precisión simple

N = –0,7510
1. Expresarlo en binario: –0,7510 = –0,112
2. Normalizar: –0,112 = –1,12×2–1
3. Cálculo del exponente en exceso:
exp = –110 + 12710 = 12610,exc.127 = 011111102,exc.127
4. Cálculo de mantisa:
m = 1,10000000000000000000000 (el bit implícito no se almacena)
5. Bit de signo: s = 1 (nº negativo)
6. Representación en precisión simple:
1 0 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
S EXPONENTE MANTISA

7. Representación en notación compacta hexadecimal:


N = 1011 1111 0100 0000 0000 0000 0000 00002,IEEE754,s =
= BF40000016,IEEE754,s
Sistemas de representación en coma flotante
Errores de representación y técnicas de redondeo

• La coma flotante representa los números reales de forma


aproximada.
– Resolución: distancia entre dos números consecutivos: 2exp-f.
– Error absoluto ea = | X-X’|.
– Error relativo: cociente entre el error absoluto y la cantidad real.
• Si para representar una cantidad X necesitamos más bits de
mantisa de los que caben en la representación, es necesario
aplicar una técnica de redondeo:
– Redondeo hacia 0.
– Redondeo hacia +∞.
– Redondeo hacia -∞.
– Redondeo al valor más próximo.
Sistemas de representación en coma flotante
Redondeo hacia 0

• También denominado redondeo por truncamiento.


• Se eliminan los bits sobrantes sin más.

Xj+1 = Xj + 2exp-f Xi+1 = Xi + 2exp-f


Xj y Xj+1 son números Xi y Xi+1 son números
representables consecutivos representables consecutivos

XMj = (Xj+1 + Xj) / 2 XMi = (Xi+1 + Xi) / 2


XMj es el punto medio entre ambos XMi es el punto medio entre ambos

Xj XMj Xj+1 0 Xi XMi Xi+1

R5 R2
R4 R6 R1 R3
-∞ +∞

R1, R2 y R3 se aproximan por Xi


R4, R5 y R6 se aproximan por Xj+1
Sistemas de representación en coma flotante
Redondeo hacia +∞

• También denominado redondeo por exceso.


• El número se representa por la cantidad representable
inmediatamente superior.
Xj+1 = Xj + 2exp-f Xi+1 = Xi + 2exp-f
Xj y Xj+1 son números Xi y Xi+1 son números
representables consecutivos representables consecutivos

XMj = (Xj+1 + Xj) / 2 XMi = (Xi+1 + Xi) / 2


XMj es el punto medio entre ambos XMi es el punto medio entre ambos

Xj XMj Xj+1 0 Xi XMi Xi+1

R5 R2
R4 R6 R1 R3
-∞ +∞

R1, R2 y R3 se aproximan por Xi+1


R4, R5 y R6 se aproximan por Xj+1
Sistemas de representación en coma flotante
Redondeo hacia -∞

• También denominado redondeo por defecto.


• El número se representa por la cantidad representable
inmediatamente inferior.
Xj+1 = Xj + 2exp-f Xi+1 = Xi + 2exp-f
Xj y Xj+1 son números Xi y Xi+1 son números
representables consecutivos representables consecutivos

XMj = (Xj+1 + Xj) / 2 XMi = (Xi+1 + Xi) / 2


XMj es el punto medio entre ambos XMi es el punto medio entre ambos

Xj XMj Xj+1 0 Xi XMi Xi+1

R5 R2
R4 R6 R1 R3
-∞ +∞

R1, R2 y R3 se aproximan por Xi


R4, R5 y R6 se aproximan por Xj
Sistemas de representación en coma flotante
Redondeo al valor más próximo (I)

• Es el sistema más preciso.


• La decisión se toma en función del valor de los bits
sobrantes (bits de redondeo).
• Valor de los bits de redondeo para números positivos:
Xi+1 = Xi + 2exp-f
XM = (Xi+1 + Xi) / 2
Xi y Xi+1 son números positivos
XM es el punto medio entre ambos
representables consecutivos

Xi Xi+1
XM

Bits sobrantes Bits sobrantes


0X...X 1X...X
con algún X<>1
Bits sobrantes Bits sobrantes Bits sobrantes
00...0 100...0 00...0

• Números negativos: caso simétrico.


Sistemas de representación en coma flotante
Redondeo al valor más próximo (II)

• Con redondeo al valor más próximo, las cantidades se


aproximan por el valor representable más cercano.
• Punto medio: se toma el extremo con mantisa acabada en 0.
Xj+1 = Xj + 2exp-f Xi+1 = Xi + 2exp-f
Xj y Xj+1 son números negativos Xi y Xi+1 son números positivos
representables consecutivos representables consecutivos
XMj = (Xj+1 + Xj) / 2 XMi = (Xi+1 + Xi) / 2
XMj es el punto medio entre ambos XMi es el punto medio entre ambos

Xj XMj Xj+1 0 Xi XMi Xi+1

R5 R2
R4 R6 R1 R3
-∞ +∞

Bits sobrantes 1X...X Bits sobrantes 0X...X Bits sobrantes 0X...X Bits sobrantes 1X...X
con algún X<>1 Se aproxima por Xj+1 Se aproxima por Xi con algún X<>1
Se aproxima por Xj Se aproxima por Xi+1

Bits sobrantes 100...0 Bits sobrantes 100...0


Se aproxima por el candidato cuya mantisa acabe por 0 Se aproxima por el candidato cuya mantisa acabe por 0
Sistemas de representación en coma flotante
Ejemplo de conversión de base 10 a IEEE 754 precisión simple

N = –23,110
1. Expresarlo en binario: –23,110 ≈ –10111,00011001100110011001100112
2.a. Normalizar:
-10111,00011001100110011001100112 ≈ -1,01110001100110011001100110011×24
2.b. Redondear al valor más próximo:
-1,01110001100110011001100110011×24 ≈ -1,01110001100110011001101×24
3. Cálculo del exponente en exceso:
exp = 410 + 12710 = 13110,exc.127 = 100000112,exc.127
4. Cálculo de mantisa:
m = 1,01110001100110011001101 (el bit implícito no se almacena)
5. Bit de signo: s = 1 (nº negativo)
6. Representación en precisión simple:
1 1 0 0 0 0 0 1 1 0 1 1 1 0 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1
S EXPONENTE MANTISA

7. Representación en notación compacta hexadecimal:


N = 1100 0001 1011 1000 1100 1100 1100 11012,IEEE754,s =
= C1B8CCCD16,IEEE754,s
Sistemas de representación en coma flotante
Ejemplo de conversión de base 10 a IEEE 754 precisión simple

N = 2,567510 x 1015
1. Expresarlo en binario: 2,567510 x 1015 ≈ 1,23E415A16 x 251 =
= 1,00100011111001000001010110102 x 251
2.a. Normalizar: 1,00100011111001000001010110102 x 251 está normalizado.
2.b. Redondear al valor más próximo:
1,00100011111001000001010110102 x 251 ≈ 1,001000111110010000010112 x 251
3. Cálculo del exponente en exceso:
exp = 5110 + 12710 = 17810,exc.127 = 101100102,exc.127
4. Cálculo de mantisa:
m = 1,00100011111001000001011 (el bit implícito no se almacena)
5. Bit de signo: s = 0 (nº positivo)
6. Representación en precisión simple:
0 1 0 1 1 0 0 1 0 0 0 1 0 0 0 1 1 1 1 1 0 0 1 0 0 0 0 0 1 0 1 1
S EXPONENTE MANTISA

7. Representación en notación compacta hexadecimal:


N = 0101 1001 0001 0001 1111 0010 0000 10112,IEEE754,s =
= 5911F20B16,IEEE754,s
Sistemas de representación en coma flotante
Ejemplo de conversión de base 10 a IEEE 754 precisión simple

N = -6,8876610 x 10-39
1. Expresarlo en binario: -6,8876610 x 10-39 ≈ -1,2BFFF9A16 x 2-127 =
= -1,00101011111111111111100110102 x 2-127
2.a. Normalizar: -1,00101011111111111111100110102 x 2-127 está normalizado.
2.b. Redondear al valor más próximo:
-1,00101011111111111111100110102 x 2-127 ≈ -1,001010111111111111111012 x 2-127
El exponente queda fuera de rango, por tanto estamos ante un caso especial con
exponente igual a -126 y mantisa desnormalizada:
-0,100101011111111111111100110102x2-126 ≈ -0,100101011111111111111102 x 2-126
3. Exponente: 00000000
4. Cálculo de mantisa:
m = 0,10010101111111111111110 (no hay bit implícito)
5. Bit de signo: s = 1 (nº negativo)
6. Representación en precisión simple:
1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0
S EXPONENTE MANTISA

7. Representación en notación compacta hexadecimal:


N = 1000 0000 0100 1010 1111 1111 1111 11102,IEEE754,s =
= 804AFFFE16,IEEE754,s
Sistemas de representación en coma flotante
Ejemplo de conversión de base 10 a IEEE 754 precisión simple

N = 4,510 x 10100
1. Expresarlo en binario: 4,510 x 10100 ≈ 1,492E2CA16 x 2334 =
= 1,010010010010111000101100102 x 2334

Como el exponente es mayor que el mayor exponente permitido, el número no es


representable en IEEE 754 con precisión simple.
Sistemas de representación en coma flotante
Operaciones de suma y resta

Inicio • Ejemplo en notación científica: A+B,


con 3 cifras fraccionarias en la mantisa
Alinear las mantisas A = 4,538 · 104 ---- B = 6,471 · 102
1. Alinear mantisas
Sumar/restar las A = 4,538 · 104 ---- B = 0,06471 · 104
mantisas 2. Sumar mantisas
– A+B = (4,538+0,06471) · 104 = 4,60271 · 104
Normalizar la mantisa
3. Normalizar mantisa resultante
resultante Ya está normalizada
4. Redondear mantisa resultante
¿Exponente mayor Sí – A+B = 4,60271 · 104 ≈ 4,603 · 104
que el máximo?

No
Infinito positivo
¿Exponente menor Sí o negativo
que el mínimo?
No
Representar número en
Redondear la forma desnormalizada
mantisa resultante

No ¿Todavía está
normalizada?

Fin
Sistemas de representación en coma flotante
Ejemplo de suma de dos cantidades dadas en IEEE 754 precisión simple

A = 4C740000 ---- B = 49840017


1. Dividir en campos añadiendo el bit implícito:
A → Ma = +1,111010000000000000000002 ---- Expa = 10011000E127
B → Mb = +1,000010000000000000101112 ---- Expb = 10010011E127
2. Alinear mantisas: Expa - Expb = 5 → desplazar Mb 5 lugares a la derecha
M’b = +0,00001000010000000000000101112
3. Sumar las mantisas:
Mr = Ma + Mb =+1,11110000010000000000000101112 ---- Expr = 10011000E127
4. Normalizar la mantisa resultante: ya está normalizada.
5. Redondear la mantisa resultante al valor más próximo:
Mr = +1,11110000010000000000000101112 (bits de redondeo en cursiva) →
M’r = +1,111100000100000000000012 (bit implícito en negrita).
6. Representación en precisión simple:
0 1 0 0 1 1 0 0 0 1 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1
S EXPONENTE MANTISA

Representación en notación compacta hexadecimal:


R = 0100 1100 0111 1000 0010 0000 0000 00012,IEEE754,s =
= 4C78200116,IEEE754,s
Sistemas de representación en coma flotante
Operaciones de producto y división

Inicio
A m a ⋅ 2expa 
=
 ⇒ R = A ⋅ B = ( m ⋅ m ) ⋅ 2 expa + exp B

=
B m b ⋅ 2expb 
p a b
Sumar/restar los
exponentes

A m a ⋅ 2expa 
= A  m a  expa −expB
Multiplicar/dividir las
exp b 
⇒ R = = ⋅2
=
B mb ⋅ 2 
mantisas d
B  mb 
Normalizar la mantisa
resultante • Ejemplo en notación científica: A · B,
con 3 cifras fraccionarias en la mantisa
A = 4,538 · 104 ---- B = 6,471 · 102
¿Exponente mayor Sí
que el máximo?
1. Sumar exponentes
No
Infinito positivo Exp’R = 4+2 = 6
¿Exponente menor Sí o negativo 2. Multiplicar mantisas
que el mínimo?
M’R = MA·MB = 4,538 · 6,471 =
No
Representar número en
= 29,365398
Redondear la forma desnormalizada 3. Normalizar mantisa resultante
mantisa resultante
MR = 2,9365398
¿Todavía está
ExpR = 6+1 = 7
No
normalizada? 4. Redondear mantisa del resultado
Sí MR = 2,9365398 ≈ 2,937
5. Resultado
Fin A·B ≈ 2,937 · 107
Índice

1. Introducción.
2. Sistemas de representación numérica.
3. Aritmética binaria.
4. Sistemas de representación en coma fija.
5. Sistemas de representación en coma flotante.
6. Representación de caracteres alfanuméricos.
7. Representación de datos numéricos: texto frente a binario.
Representación de caracteres alfanuméricos
Sistemas de representación alfanumérica

• Codificaciones alfanuméricas: sirven para representar caracteres


alfabéticos, numéricos, signos de puntuación y signos de control.
• ASCII: código estándar americano para el intercambio de información
(American Standard Code for Information Interchange).
 Originalmente: US-ASCII de 7 bits.
 Actualmente: ASCII extendido de 8 bits con variaciones nacionales.
 Variación nacional para España y otros países latinos: Latin-1 ó ISO 8859-1.
• Unicode: para intercambio de mensajes multilingüe.
 Primera versión: caracteres de longitud fija de 16 bits.
 UTF-8: codificación de longitud variable con caracteres de 1 a 4 bytes.
 Caracteres de 1 byte: US-ASCII de 7 bits precedidos de un bit a 0.
 Caracteres adicionales de las lenguas romances, griegos, cirílicos, árabes,
hebreos, etc: 2 bytes, el primero comenzando por 110 y el segundo por 10.
 Caracteres chinos, japoneses, coreanos, Braille, etc: 3 bytes, el primero
comenzando en 1110 y los otros dos por 10.
 Caracteres de 4 bytes: su primer byte comienza por 11110, y los otros tres
por 10.
 UTF-16: codificación de longitud variable con 2 ó 4 bytes por carácter.
 UTF-32: caracteres de longitud fija de 32 bits.
Representación de caracteres alfanuméricos
Sistemas de representación alfanumérica
Representación de caracteres alfanuméricos
Tabla de caracteres ASCII extendidos ISO 8859-1
Representación de caracteres alfanuméricos
Representación de cadenas de caracteres

• Los caracteres normalmente van en secuencia formando cadenas o


tiras (strings ).
• Longitud de una cadena de caracteres:
 A veces se conoce de antemano (necesario dato entero adicional).
 Lenguaje C: ASCII con carácter nulo (NUL, ‘\0’) delimitador de fin de cadena.
• Ejemplos de cadenas ASCII Latin-1 delimitadas por el carácter nulo:
“Peña”
Caracteres ‘P’ ‘e’ ‘ñ’ ‘a’ ‘\0’
Hexadecimal 5016 6516 F116 6116 0016
Binario 01010000 01100101 11110001 01100001 00000000

“1058”
Caracteres ‘1’ ‘0’ ‘5’ ‘8’ ‘\0’
Hexadecimal 3116 3016 3516 3816 0016
Binario 00110001 00110000 00110101 00111000 00000000
Representación de caracteres alfanuméricos
Ficheros de texto (I)

• Los ficheros de texto contienen bytes que se presentan en pantalla o


impresora como caracteres alfanuméricos.
 Caracteres de control para marcar finales de línea, tabulaciones, etc.
Representación de caracteres alfanuméricos
Ficheros de texto (II)

• Los caracteres se almacenan internamente en memoria o en disco


mediante combinaciones de bits de acuerdo con el código utilizado.
Índice

1. Introducción.
2. Sistemas de representación numérica.
3. Aritmética binaria.
4. Sistemas de representación en coma fija.
5. Sistemas de representación en coma flotante.
6. Representación de caracteres alfanuméricos.
7. Representación de datos numéricos: texto frente a binario.
Datos numéricos: texto frente a binario
Representación de datos numéricos en modo texto

• Datos numéricos en modo texto:


 Representados mediante un string.
 Un carácter por dígito, quizá más el signo, la
coma decimal y el indicador y el signo del
exponente.
 Se almacenan en memoria o disco según un
código de representación alfanumérica.
 Al presentarlos en pantalla o impresora se
interpretan como caracteres alfanuméricos y
son legibles para los humanos.
Datos numéricos: texto frente a binario
Representación de datos numéricos en binario

• Datos numéricos en binario: representación interna del dato en crudo /


longitud fija / no legibles por los humanos / legibles para la circuitería
del computador, en concreto para sus operadores aritméticos.
 Enteros sin signo: binario puro.
 Enteros con signo: complemento a 2 (positivos y negativos).
 Coma flotante: IEEE 754 de precisión simple o doble.
Datos numéricos: texto frente a binario
Comparación

Dato Representación
ISO 8859-1: 31 32 39 30 38 (hex.)
00110001 00110010 00111001 00110000 00111000
12908
Complemento a 2: 0000326C (hex.)
00000000000000000011001001101100

Dato Representación
ISO 8859-1: 2D 32 34 37 36 31 (hex.)
00101101 00110010 00110100 00110111 00110110 00110001
-24761
Complemento a 2: FFFF9F47 (hex.)
11111111111111111001111101000111

Dato Representación
ISO 8859-1: 39 2E 33 35 65 2B 32 (hex.)
00111001 00101110 00110011 00110101 01100101 00101011 00110010
9.35e+2
IEEE 754 de precisión simple: 4469C000 (hex.)
01000100011010011100000000000000

También podría gustarte