132
Representación de la información numérica Antonio José Velasco González Ramon Costa Castelló PID_00153515

Representación de la información numérica ·  · 2010-06-13características de la tecnología hacen qu e dentro de los computadores sólo haya dos símbolos distintos (0 y 1)

Embed Size (px)

Citation preview

Representación de la información numéricaAntonio José Velasco GonzálezRamon Costa Castelló

PID_00153515

© FUOC • PID_00153515 Representación de la información numérica

Índice

Introducción ............................................................................................ 5

Objetivos ................................................................................................... 6

1. Los números y los sistemas de representación .......................... 7

1.1. Sistemas de representación ............................................................. 7

1.2. Sistemas de numeración posicionales ........................................... 8

1.3. Cambios de base ............................................................................. 11

1.3.1. Método basado en el TFN ................................................... 11

1.3.2. Método basado en el teorema de la división entera ........... 12

1.3.3. Cambio de base entre b y bn ................................................ 15

1.4. Números con signo ......................................................................... 18

1.5. Suma y resta en los sistemas posicionales ...................................... 19

1.6. Multiplicación y división por potencias de la base

de numeración ................................................................................ 20

1.7. Representación en notación científica ........................................... 22

1.8. Suma y resta en notación científica ............................................... 23

2. Representación de los números en un computador.................. 25

2.1. Condicionantes físicos ................................................................... 25

2.1.1. Rango de representación ..................................................... 27

2.1.2. Precisión .............................................................................. 28

2.1.3. Error de representación ....................................................... 29

2.1.4. Aproximaciones: truncamiento y redondeo ....................... 29

2.1.5. Desbordamiento .................................................................. 32

2.2. Números naturales .......................................................................... 34

2.3. Números enteros ............................................................................. 35

2.3.1. Representación de enteros en signo y magnitud

en base 2 .............................................................................. 36

2.3.2. Suma y resta en signo y magnitud ...................................... 38

2.3.3. Complemento a la base ....................................................... 39

2.3.4. Representación en complemento a 2 .................................. 40

2.3.5. Cambio de signo en complemento a 2 ............................... 43

2.3.6. Magnitud de los números en complemento a 2 ................. 44

2.3.7. Suma en complemento a 2 ................................................. 46

2.3.8. Resta en complemento a 2 .................................................. 48

2.3.9. Multiplicación por 2k de números en complemento a 2 .... 49

2.3.10. Representación en exceso a M ........................................... 50

2.4. Números fraccionarios .................................................................... 57

2.5. Representación en coma flotante ................................................... 67

2.5.1. Rango de representación en coma flotante ........................ 72

2.5.2. Precisión de una representación en coma flotante ............. 75

2.5.3. Suma en coma flotante ....................................................... 80

© FUOC • PID_00153515 Representación de la información numérica

3. Otros tipos de representaciones .................................................... 84

3.1. Empaquetamiento de la información ............................................ 84

3.2. Representación de la información alfanumérica ........................... 86

3.3. Representación BCD ....................................................................... 88

Resumen .................................................................................................... 91

Ejercicios de autoevaluación ............................................................... 93

Solucionario ............................................................................................. 94

Glosario ..................................................................................................... 130

Bibliografía .............................................................................................. 132

© FUOC • PID_00153515 5 Representación de la información numérica

Introducción

Desde que se inventaron, una de las funciones principales de los computado-

res ha sido la realización de cálculos, tanto dentro del ámbito científico y téc-

nico como administrativo. Los elementos fundamentales de estos cálculos son

los números y las operaciones entre los mismos. No es extraño, por tanto, que

se haya realizado un esfuerzo importante de análisis y estudio de las maneras

de representar y trabajar con los números dentro de un computador.

La adaptación de los sistemas de representación numérica al entorno de los

computadores ha hecho que, finalmente, la manera en la que los humanos tra-

bajamos con los números sea muy distinta, en muchos aspectos, de la manera

en la que trabajan los computadores. Un ejemplo simple puede ilustrar la natu-

raleza de estas diferencias: en nuestra vida cotidiana utilizamos diez símbolos

distintos para representar los números (0, 1, 2, 3, 5, 7, 6, 8 y 9), mientras que las

características de la tecnología hacen que dentro de los computadores sólo haya

dos símbolos distintos (0 y 1). Por otro lado, la naturaleza de las operaciones que

hacemos y el tipo de números involucrados en los cálculos determinan el siste-

ma de representación numérica más adecuado en cada caso.

Hablamos de los números, muchas veces, de manera genérica, pero es impor-

tante recordar que los hay de distintos tipos: los naturales (1, 2, 3, 4, 5, 6, etc.),

los enteros (−3, −10, 0, 10, etc.) y los números fraccionarios (1,025, −23,456),

entre otros. Cada uno de este tipo de números presenta unas características y

propiedades diferenciadas que hay que tener en cuenta en el momento de ele-

gir la manera de representarlos dentro de un computador.

En este módulo, se estudian los principales sistemas de representación de núme-

ros dentro de los computadores. Se hace un énfasis especial en las características

de cada una de las representaciones y se analiza la problemática introducida por

las limitaciones físicas de los computadores.

© FUOC • PID_00153515 6 Representación de la información numérica

Objetivos

Los objetivos principales que alcanzaréis con el estudio de este módulo son los

siguientes:

1. Conocer los sistemas de representación de la información numérica que

permiten trabajar con números naturales, con números enteros y con nú-

meros fraccionarios.

2. Conocer en profundidad los sistemas ponderados no redundantes de base

fija 2, 10 y 16, además de saber representar un mismo valor numérico en

bases distintas.

3. Comprender y saber utilizar los formatos con los cuales se codifica la infor-

mación numérica en un computador: el sistema ponderado en binario para

los números naturales; signo y magnitud, complemento a 2 y exceso a M

para los números enteros; y los sistemas de coma fija y de coma flotante

para la representación de números fraccionarios.

4. Conocer las operaciones aritméticas básicas que lleva a cabo un computa-

dor y saber efectuarlas a mano. Estas operaciones son la suma y la resta so-

bre números naturales, enteros y fraccionarios.

5. Comprender los conceptos de rango y precisión de un formato de codifica-

ción de la información numérica en un computador. Esto incluye los con-

ceptos de desbordamiento y de error de representación.

6. Conocer la manera de representar caracteres en formato ASCII.

7. Entender la manera de empaquetar datos a partir de la base 16 o el sistema

BCD.

© FUOC • PID_00153515 7 Representación de la información numérica

1. Los números y los sistemas de representación

El objetivo de este apartado es dar una visión de conjunto de la representación

de valores numéricos. Se exponen las bases de nuestro sistema de numeración y

se enumeran distintos sistemas de representación de valores numéricos. Después

de esta introducción, pasamos a analizar en profundidad el sistema de represen-

tación posicional de base (o raíz) fija. Finalmente, se introducen las técnicas que

nos permiten obtener las diferentes representaciones que un mismo valor numé-

rico tiene según los parámetros que definen el sistema de numeración.

1.1. Sistemas de representación

La idea de valor numérico es un concepto abstracto. El sentido de un valor nu-

mérico viene dado por la relación que mantiene con otros valores numéricos.

Utilizamos esta información para relacionarla de distintas maneras con otros

valores numéricos y llegar a determinadas conclusiones.

Para trabajar ágilmente con este tipo de información, debemos poder repre-

sentarla eficientemente, de manera que tenemos que disponer de lo que deno-

minamos un sistema de representación numérica.

La gama de sistemas de representación numérica es bastante amplia. Entre

otros, podemos encontrar los sistemas de raíz o base, los sistemas de dígitos

signados, los sistemas de restos y los sistemas racionales.

Del conjunto de sistemas de representación numérica, los sistemas basados en

raíz (o base) son los que más se utilizan, y en éstos centraremos nuestra aten-

ción.a

Cuando trabajamos con base 10, disponemos de diez dígitos distintos para la re-

presentación: 0, 1, 2, 3, 4, 5, 6, 7, 8 y 9. Si la base del sistema de numeración es

Un sistema de representación numérica es una metodología que per-

mite representar un conjunto de valores numéricos.

Un sistema de representación numérica basado en raíz describe los

valores numéricos en función de una o distintas raíces. La raíz o base

del sistema de numeración indica el número de dígitos distintos de los

que se dispone.

Aspectos de terminología

Se puede utilizar la designa-ción de base o raíz de manera indistinta, aunque es más habi-tual el uso de la palabra base: hablamos de sistemas de nu-meración en base n.

© FUOC • PID_00153515 8 Representación de la información numérica

2, se dispone de dos dígitos, frecuentemente representados por 0 y 1. En caso de

que la base de numeración sea 16, disponemos de dieciséis dígitos distintos, que

normalmente se representan con: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E y F.

Por otro lado, hay sistemas de numeración que utilizan más de una base. Se

trata de sistemas de representación de base mixta o combinada.

Los sistemas de representación que usan sólo una base reciben el nombre de

sistemas de base fija. La aritmética que utilizamos de manera cotidiana se de-

sarrolla en un sistema de numeración de base fija en el que la base de nume-

ración es 10.

Consideremos el valor numérico 321 en nuestro sistema de numeración en

base 10. Para representar este valor hemos utilizado el dígito 3, el dígito 2 y el dí-

gito 1, ordenados de una manera determinada. Estos mismos dígitos, ordenados

de otra manera (por ejemplo, 213), representan un valor numérico distinto, pese

a estar constituido por los mismos dígitos. Los sistemas de numeración en los cua-

les el orden de los dígitos es determinante en la representación numérica se de-

nominan sistemas posicionales.

A partir de este punto, los análisis y los estudios contenidos en el resto de los

apartados de este módulo harán referencia a sistemas de numeración posicio-

nales de base fija, que son los que tienen más interés para nuestro estudio de

la representación de la información numérica en los computadores.a

1.2. Sistemas de numeración posicionales

Estamos acostumbrados a trabajar con sistemas de numeración posicionales.

Nuestra aritmética se basa en un sistema de numeración posicional de base fi-

ja, en el que la base de numeración es 10. En este sistema, la posición que ocu-

pa un dígito tiene asociada un peso determinado. Esto quiere decir que la

representación de los números naturales empieza por 0 y los dígitos siguen

hasta llegar al 9. Después del dígito 9 viene una combinación de dos dígitos,

el 10, porque sólo disponemos de diez dígitos distintos. La secuencia de nú-

meros naturales es de la forma: 0, 1, 2, 3, 4 ,5, 6, 7, 8 ,9, 10, 11, 12, 13, 14, 15,

16, 17, 18, 19 ,20, etc.

Consideremos el valor 632(10. Entendemos que este número representa 6 cen-

tenas, 3 decenas y 2 unidades. Un cambio de orden de los dígitos (por ejemplo,

326(10) comporta un cambio de los pesos asociados y, por lo tanto, un cambio

del valor numérico representado.

Un sistema posicional es aquél en el que la representación de un valor

numérico es determinada por una secuencia ordenada de dígitos.

Sistema de representación de base mixta

Un ejemplo de este tipo de sis-tema es el sistema horario, en el cual los valores varían en fun-ción de las bases 24, 60 y 60 (horas, minutos y segundos).

© FUOC • PID_00153515 9 Representación de la información numérica

Las posiciones con subíndice negativo corresponden a la parte fraccionaria

del valor numérico y se consignan a la derecha de la coma. Las posiciones con

subíndice positivo corresponden a la parte entera del valor numérico y se

consignan a la izquierda de la coma.

Para indicar la base b del sistema de numeración seguiremos la nomenclatura

X(b, donde X es la representación del valor numérico (secuencia ordenada de

dígitos) en base b.a

Consideremos de nuevo el valor 632(10. Podemos expresar este número en

función de los pesos asociados a la posición que ocupa cada dígito de la ma-

nera siguiente:

632(10 = 6 · 100 + 3 · 10 + 2 · 1

Según la numeración que hemos establecido, en el número 632(10, el dígito 2

ocupa la posición 0, el dígito 3 ocupa la posición 1 y el dígito 6 ocupa la posi-

ción 2. Podemos reescribir la expresión anterior relacionando los pesos con la

base de numeración y la posición que ocupa cada dígito:

632(10 = 6 · 102 + 3 · 101 + 2 · 100

Podemos intuir que, en general, un sistema de representación numérica posi-

cional de base fija permite expresar un valor numérico de esta manera, según

la base de numeración y la posición de cada dígito.

Examinemos, ahora, el número 34,75(10. Se trata de un número con parte frac-

cionaria. Según la numeración de dígitos propuesta, el dígito 7 ocupa la posi-

ción −1 y el dígito 5 la posición −2, mientras que los dígitos 3 y 4 (dígitos de la

parte entera) ocupan las posiciones 1 y 0, respectivamente. La expresión de este

valor en función de la base de numeración y de la posición de cada dígito es:

34,75(10 = 3 · 101 + 4 · 100 + 7 · 10−1 + 5 · 10−2

La secuencia de dígito que representa un valor numérico en un sistema posi-

cional debe ser ordenada, porque cada posición tiene un peso asociado. En un

sistema de base fija, el valor de este peso depende de la posición que ocupa el

Un sistema de representación numérica posicional de base fija es

aquél en el que un valor numérico X se representa como una secuencia

ordenada de dígitos, de la manera siguiente:

X = xn−1xn−2 · · · x1x0,x−1 · · · x−m

donde cada xi es un dígito tal que 0 ≤ xi ≤ b − 1, donde b es la base del sis-

tema de numeración y xi el dígito de la posición i-ésima de la secuencia.

Recordemos que 1k

kxx

− =

© FUOC • PID_00153515 10 Representación de la información numérica

dígito y de la base de numeración. El peso asociado a la posición p es bp, donde

b es la base de numeración.a

Por lo tanto, además de una secuencia de dígitos correspondiente a la representa-

ción de un valor numérico en un sistema posicional de raíz fija, habrá que cono-

cer la base de numeración para determinar el valor numérico representado.a

Consideremos la secuencia de dígitos 235. Ésta es una secuencia de dígitos que

representa un valor numérico válido en cualquier sistema de numeración po-

sicional de raíz fija en el que la base sea mayor o igual que 6, dado que el 5 no

es un dígito válido en las bases de numeración inferiores a 6. Ahora bien, esta

secuencia de dígitos representa valores numéricos distintos según la base de

numeración. Por lo tanto, 235(6 ≠ 235(10 ≠ 235(16.

La tabla siguiente muestra la correspondencia entre las representaciones de los

valores en las bases más habituales:

De esta manera:

Esta expresión se conoce como el teorema fundamental de la nume-

ración (TFN), y nos muestra cómo se expresa un número según la base

en la que está representado.

Base 2 Base 4 Base 8 Base 10 Base 16

0 0 0 0 0

1 1 1 1 1

10 2 2 2 2

11 3 3 3 3

100 10 4 4 4

101 11 5 5 5

110 12 6 6 6

111 13 7 7 7

1000 20 10 8 8

1001 21 11 9 9

1010 22 12 10 A

1011 23 13 11 B

1100 30 14 12 C

1101 31 15 13 D

1110 32 16 14 E

1111 33 17 15 F

10000 100 20 16 10

10001 101 21 17 11

10010 110 22 18 12

11 2

1 2· · ... ·n

i n n mi n n m

i m

X x b x b x b x b−

− − −− − −

=−

= = + + +∑

Abreviaremos teorema fundamental de la numeración con la sigla TFN.

Elementos de la tabla

En cada columna se represen-tan los valores numéricos des-de el 0 hasta el 18(10 en la base indicada en la casilla superior de la columna. En cada fila dis-ponemos de la representación del mismo valor numérico en diferentes bases. La correspon-dencia entre estas representa-ciones se explica en el siguiente subapartado.

© FUOC • PID_00153515 11 Representación de la información numérica

El sistema de numeración con el que trabajaremos habitualmente tiene base

10 y recibe el nombre de sistema decimal. Análogamente, se denomina siste-

ma binario al sistema de numeración en base 2, sistema octal al que utiliza

base 8 y sistema hexadecimal al que utiliza base 16.a

1.3. Cambios de base

En los apartados siguientes, se exponen las dos maneras básicas de efectuar un

cambio de base.

1.3.1. Método basado en el TFN

Consideremos el número 324(10. Hemos visto que el TFN nos permite expresar

un valor numérico según su base. Si aplicamos el TFN a este número, tenemos:

324(10 = 3 · 102 + 2 · 101 + 4 · 100

Si hacemos las operaciones indicadas a la derecha de la igualdad en base 10,

obtenemos la representación en base 10 de este valor numérico, que es el que

tenemos a la izquierda de la igualdad.

Ahora bien, si hiciésemos las operaciones en otra base, por ejemplo en base 7,

obtendríamos la representación de este valor numérico en base 7. Si hiciése-

mos las operaciones en base b, obtendríamos la representación en base b.

La dificultad reside en operar en una base distinta de la base 10, puesto que no

estamos acostumbrados a esto. Por lo tanto, este método nos será útil para pa-

sar un valor representado en una base b a base 10.a

Cambio de base basado en el TFN

Para realizar el cambio de base siguiente: 462(7 → X(10

1) Ponemos el número en función de su base (base 7):

462(7 = 4 · 72 + 6 · 71 + 2 · 70

La secuencia ordenada de dígitos que representa un valor numérico cam-

bia según la base b del sistema de numeración, pero hay una relación di-

recta entre estas representaciones.

Los métodos de cambio de base nos permiten encontrar la secuencia

de dígitos de un valor numérico X que corresponde al sistema de nume-

ración en base b’, a partir de la representación del valor numérico X en

el sistema de numeración en base b, es decir:

X(b → Método de cambio de base → X(b’

Un dígito binario recibe el nombre de bit, que es un acrónimo de la

expresión inglesa binary digit.

Utilidad de los cambiosde base

Los cambios de base serán de utilidad, por ejemplo, para convertir valores numéricos expresados en base 10 (nues-tro sistema habitual de nume-ración) a base 2 (sistema de numeración habitual en los computadores), y viceversa.

© FUOC • PID_00153515 12 Representación de la información numérica

Hacemos las operaciones a partir de la aritmética de la base de llegada (base 10):

4 · 72 + 6 · 71 + 2 · 70 = 4 · 49 + 6 · 7 + 2 · 1 = 240(10

Las secuencias de dígitos 462(7 y 240(10 representan el mismo valor numérico. Son dosrepresentaciones del mismo número, expresado en sistemas de numeración que tienenbases distintas: base 7 la primera y base 10 la segunda.

El método es válido tanto para números enteros como para números con parte

fraccionaria.a

Cambios de base basados en el TFN

Para realizar el cambio de base siguiente: 101100,01(2 → X(10

1) Ponemos el número en función de su base (base 2):

101100,01(2 = 1 · 25 + 0 · 24 + 1 · 23 + 1 · 22 + 0 · 21 + 0 · 20 + 0 · 2−1 + 1 · 2−2

2) Hacemos las operaciones a partir de la aritmética de base 10:

1 · 25 + 0 · 24 + 1 · 23 + 1 · 22 + 0 · 21 + 0 · 20 + 0 · 2-1 + 1 · 2-2 = = 1 · 32 + 0 · 16 + 1 · 8 + 1 · 4 + 0 · 2 + 0 · 1 + 0 · 0,5 + 1 · 0,25 = 44,25(10

Para realizar el cambio de base siguiente: AF2C,2(16 → X(10

1) Ponemos el número en función de su base (base 16):

AF2C,2(16 = A · 163 + F · 162 + 2 · 161 + C · 160 + 2 · 16−1

2) Hacemos las operaciones a partir de la aritmética de base 10. En este caso, encontra-mos que la base inicial es mayor que 10. Por lo tanto, deberemos transformar los dígitosantes de hacer las operaciones:

A · 163 + F · 162 + 2 · 161 + C · 160 + 2 · 16−1 == 10 · 163 + 15 · 162 + 2 · 161 + 12 · 160 + 2 · 16−1 = 44844,125(10

1.3.2. Método basado en el teorema de la división entera

La dificultad que se presenta con el método de cambio de base basado en el

TFN para conseguir la representación de un número en una base b que no sea

base 10 es que hay que hacer operaciones en esta base b. Con el objetivo de

superar esta dificultad, disponemos de un método alternativo para hacer un

cambio de base.

Podemos formalizar el proceso para transformar la representación de un

valor numérico X en base b a base 10 de la siguiente manera:

1) Expresar el valor numérico X según la base b del sistema de numera-

ción en el que está representado (siguiendo el TFN).

2) Hacer las operaciones aritméticas en base 10. Para los casos en los

que b > 10, será necesario convertir los dígitos de base b a base 10 antes

de hacer las operaciones.

Valores decimales

Dígitos hexadecimales

0 0

1 1

2 2

3 3

4 4

5 5

6 6

7 7

8 8

9 9

10 A

11 B

12 C

13 D

14 E

15 F

© FUOC • PID_00153515 13 Representación de la información numérica

La idea subyacente de este segundo método es ir haciendo de manera iterativa

divisiones enteras de la representación en base 10 por el valor de la nueva base

de numeración. Los restos de las divisiones enteras forman los dígitos de la re-

presentación en la nueva base:

317(10 → X(7

317 = 45 · 7 + 2

45 = 6 · 7 + 3

6 = 0 · 7 + 6

317(10 = 632(7

La secuencia de restos tomados en orden inverso nos da la representación en

base 7. Las secuencias de dígitos 632(7 y 317(10 representan el mismo valor nu-

mérico. Son dos representaciones del mismo número, expresado en sistemas de

numeración que tienen bases distintas: base 7 la primera y base 10 la segunda.

Para el cambio de base de números fraccionarios, debemos separar y tratar de

manera independiente la parte entera y la parte fraccionaria.a

1) Parte entera: aplicar sucesivamente el mecanismo de la división entera, divi-

diendo la parte entera por el valor de la nueva base, y haciendo las operaciones

en base 10. La secuencia de restos obtenidos, tomados del último al primero con-

seguido, corresponde a la secuencia de dígitos de izquierda a derecha de la parte

entera en la nueva base. Para los casos en los que la nueva base sea mayor que 10,

será necesario convertir los restos obtenidos a dígitos de la nueva base.

2) Parte fraccionaria: sucesivamente, se separa la parte fraccionaria y se mul-

tiplica por el valor de la nueva base. Las operaciones se hacen en base 10. La se-

cuencia de valores enteros obtenidos al hacer las multiplicaciones tomados del

primero al último obtenido corresponde a la secuencia de dígitos de izquierda a

derecha en la nueva base de representación. Para los casos en los que la nueva

base sea mayor que 10, habrá que convertir los valores enteros obtenidos a dí-

gitos de la nueva base.

Finalmente, hay que juntar la parte entera y la parte fraccionaria obtenidas.

Cambio de base

Consideremos el siguiente cambio de base:

44,25(10 → X(2

a) Parte entera: aplicamos sucesivamente el mecanismo de la división entera, dividien-do la parte entera por el valor de la nueva base (base 2):

44 = 22 · 2 + 022 = 11 · 2 + 011 = 5 · 2 + 1

5 = 2 · 2 + 12 = 1 · 2 + 01 = 0 · 2 + 1

44(10 = 101100(2

© FUOC • PID_00153515 14 Representación de la información numérica

b) Parte fraccionaria: multiplicamos sucesivamente la parte fraccionaria por el valor dela nueva base (base 2):

0,25 · 2 = 0,50 = 0,50 + 00,50 · 2 = 1,00 = 0,00 + 1

0,25(10 = 0,01(2

Para completar el cambio de base, hay que juntar la parte entera y la parte fraccionaraque resultan:

44,25(10 = 101100(2 + 0,01(2 = 101100,01(2

Las operaciones se hacen en la base inicial (base 10 en los ejemplos anteriores).

Por lo tanto, es un método especialmente útil para pasar de base 10 a otra base.

Al hacer el cambio de base de la parte entera, detendremos la sucesión de divi-

siones cuando obtengamos un cociente 0. Al hacer el cambio de base de parte

fraccionaria, detendremos la sucesión de multiplicaciones cuando la precisión

sea suficiente o cuando encontremos un comportamiento periódico. De hecho,

un número que tiene una parte fraccionaria con una representación finita no

periódica en una base puede tener una representación infinita periódica de la

parte fraccionaria en otra base. Por ejemplo, 0,3(10 = .a

Cambio de base basado en el teorema de la división entera

Consideramos el cambio de base siguiente: 44844,12(10 → X(16

1) Parte entera. Hacemos la sucesión de divisiones enteras:

44844 = 2802 · 16 + 122802 = 175 · 16 + 2

175 = 10 · 16 + 1510 = 0 · 16 + 10

En este caso, la nueva base es mayor que 10. Deberemos transformar los restos en dígitosde la nueva base (base 16):

12(10 → C(16 2(10 → 2(16 44844(10 = AF2C(1615(10 → F(1610(10 → A(16

2) Parte fraccionaria. Multiplicamos sucesivamente por la nueva base:

Observemos que la secuencia que obtenemos se repite (1, 14, 11, 8, 5, 1, 14, …). Estoquiere decir que se trata de un número periódico. Como en el apartado anterior, debere-mos transformar los valores obtenidos en dígitos de base 16:

1(10 → 1(1614(10 → E(1611(10 → B(16 8(10 → 8(16 5(10 → 5(16

1(10 → 1(16

0,12(10 = 0,1EB851EB851EB...(16 =

0,12 · 16 = 1,92 = 0,92 + 10,92 · 16 = 14,72 = 0,72 + 140,72 · 16 = 11,52 = 0,52 + 110,52 · 16 = 8,32 = 0,32 + 80,32 · 16 = 5,12 = 0,12 + 50,12 · 16 = 1,92 = 0,92 + 10,92 · 16 = 14,72 = 0,72 + 14…

(20,010011001

(160,1EB85

© FUOC • PID_00153515 15 Representación de la información numérica

Finalmente, juntaremos la parte entera y la parte fraccionaria:

44844,12(10 =

Cuando debemos transformar la expresión de un valor numérico de una base b

a una base b', donde ni b ni b' son la base 10, utilizaremos la base 10 como base

intermedia. Así pues, utilizaremos el primer método (basado en el TFN) para pa-

sar de la base b a la base 10 y posteriormente el segundo método (basado en el

teorema de la división entera) para pasar de la base 10 a la base b'.a

Ejemplo de cambio entre bases distintas de la base 10

Consideramos el cambio de base siguiente: 2232,1(4 → X(6

Haremos este cambio de base en dos pasos:

1) Hacemos el cambio de base 232,1(4 → X(10

232,1(2 = 2 · 42 + 3 · 41 + 2 · 40 + 1 · 4−1 == 32 + 12 + 2 + 0,25 = 46,25(10

2) Completamos el cambio entre las bases 4 y 6 y transformamos, de esta manera, la re-presentación obtenida en la base 10 a la base 6:

46 = 7 · 6 + 4 0,25 · 6 = 1,50 = 0,50 + 1 7 = 1 · 6 + 1 0,50 · 6 = 3,00 = 0,00 + 3 1 = 0 · 6 + 1

↓ ↓46(10 = 114(6 0,25(10 = 0,13(6

Finalmente, uniremos la parte entera y la parte fraccionaria: 46,25(10 = 114,13(6

1.3.3. Cambio de base entre b y bn

Hay un tipo especial de cambio entre bases que se da cuando una base es po-

tencia de la otra. Esta particularidad simplifica mucho la conversión.

Paso de b a bn

Consideramos la conversión siguiente:

10010110,01101101(2 → X(16

Es decir, hacemos los cambios de base:

cuando b ≠ 10 y b' ≠ 10

1) Se aplica el método basado en el teorema fundamental de la nume-

ración.

2) Se aplica el método basado en el teorema de la división entera.

La simplificación de este tipo de cambio de base es determinada por el he-

cho de que un dígito en base bn se corresponde con n dígitos en base b.

(16AF2C,1EB85

⎯⎯→ ⎯⎯→1 2( (10 ( 'b bX X X

Potencias de 2

216 65.536

215 32.768

214 16.384

213 8.192

212 4.096

211 2.048

210 1.024

29 512

28 256

27 128

26 64

25 32

24 16

23 8

22 4

21 2

20 1

2–1 0,5

2–2 0,25

2–3 0,125

2–4 0,0625

2–5 0,03125

2–6 0,015625

2–7 0,0078125

2–8 0,00390625

© FUOC • PID_00153515 16 Representación de la información numérica

Vemos que una base se puede escribir en forma de potencia del valor de la otra

base: 16 = 24. Este hecho nos dice que cada dígito de base 16 se corresponde

con cuatro dígitos de base 2.

Para cambiar de base, haremos agrupaciones de cuatro dígitos binarios y con-

vertiremos directamente cada agrupación en un dígito hexadecimal. Las agru-

paciones se hacen siempre a partir de la coma, y deben ser completas.

Si faltan dígitos para completar una agrupación, añadiremos ceros.a

En el ejemplo siguiente, debemos completar las agrupaciones con ceros:

101110,101101(2 → X(16

Podemos escribir una base en función de la otra de la forma 16 = 24. El exponen-

te es 4 y, por lo tanto, haremos agrupaciones de cuatro dígitos binarios a partir

de la coma. Añadiremos los ceros necesarios para completar las agrupaciones y

convertiremos directamente cada agrupación en un dígito hexadecimal:

101110,101101(2= 2E,B4(16

Paso de bn a b

El cambio entre bases de este tipo es análogo al caso tratado en el apartado an-

terior, pero en sentido inverso, es decir, cada dígito en base bn se transformará

en n dígitos en base b.

Podemos ver su proceso con el cambio de base siguiente:

7632,13(8 → X(2

En primer lugar, analizamos la relación entre las bases, que es 8 = 23. Consi-

guientemente, cada dígito en base 8 dará lugar a tres dígitos binarios:

7632,13(8= 111110011010,001011(2

1001 0110 , 0110 1101 (2

9 6 , 6 D (16

10010110,01101101(2 = 96,6D(16

0010 1110 , 1011 0100 (2

2 E , B 4 (16

7 6 3 2 , 1 3 (8

111 110 011 010 , 001 011 (2

Podéis ver los sistemas de numeración posicionales del subapartado 1.2 de este módulo.

© FUOC • PID_00153515 17 Representación de la información numérica

Debemos prestar atención al hecho de que se deben obtener exactamente n dí-

gitos en base b por cada dígito en base bn (en este caso, tres dígitos binarios por

cada dígito octal), añadiendo para cada dígito los ceros necesarios. Veamos en

el ejemplo siguiente cómo cada dígito hexadecimal da lugar a cuatro dígitos

binarios, ya que la relación entre las bases 16 = 24:

E1B2,4F(16 → X(2

E1B2,4F(16 = 1110000110110010,01001111(2

Errores habituales

Con frecuencia, se cometen dos errores cuando se hacen estos dos últimos ti-

pos de cambio de base:

1) Cuando hacemos un cambio de la base bn a la base b, cada dígito de la

base bn debe dar lugar a n dígitos en la base b.

Error frecuente

Hay que evitar el siguiente error:

A3(16 = 101011(2

donde el dígito hexadecimal A ha dado lugar a los dígitos 1010 en base 2 y el dígito 3 alos dígitos 11. En realidad, debería ser:

A3(16 = 10100011(2

donde se han añadido dos ceros para completar el conjunto de cuatro dígitos que debegenerar el dígito hexadecimal 3.

2) Cuando hacemos un cambio de la base b a la base bn, son necesarios n dí-

gitos de la base b para obtener un dígito en la base bn.

Error frecuente

Hay que evitar el siguiente error:

1100,11(2 = C,3(16

donde los dígitos binarios 1100 dan lugar al dígito hexadecimal C y los dígitos 11 al 3.En realidad, debería ser:

1100,1100(2 = C,C(16

donde se han incorporado dos ceros por la derecha para constituir un grupo de cuatrodígitos binarios que dan lugar al dígito hexadecimal C.

Actividades

1. Expresad los siguientes números en términos de su base y convertidlos a base 10:a) 46(7b) 3AD(16

E 1 B 2 , 4 F (16

1110 0001 1011 0010 , 0100 1111 (2

© FUOC • PID_00153515 18 Representación de la información numérica

c) 10011101(2d) 333(4e) 333(8f) B2,3(16g) 2232,02(4h) 2464,1(8i) 1110100,01101(2

2. Haced los siguientes cambios de base:a) 3245(8 → X(10b) 425(10 → X(2c) AC3C(16 → X(10d) 45367(10 → X(16e) 344(10 → X(2

3. Convertid a hexadecimal los siguientes números:a) 111010011,1110100111(2 → X(16b) 0,1101101(2 → X(16c) 111011,1010010101(2 → X(16

4. Rellenad la tabla siguiente:

En cada fila, encontrad un valor numérico expresado en la base que indica la casilla su-perior de la columna donde está. Consignad en el resto de las casillas la representacióncorrespondiente, según la base indicada en la parte superior.

5. Convertid los siguientes números en base hexadecimal a base 2, base 4 y base 8:a) ABCD(16b) 45,45(16c) 96FF,FF(16

6. Convertid a base 2 los siguientes valores:a) 4365,14(10b) 234,2(5c) 31,125(10

7. Convertid a base 10 los siguientes valores:a) 10011001,1101(2b) 110011,11(4c) 1010,11(8

1.4. Números con signo

Cuando representamos magnitudes, con frecuencia les asignamos un signo (+/−),

que indica si la magnitud numérica es positiva o negativa.

Designaremos los números que llevan la información de signo como números

con signo, en contraposición a los números sin signo, que sólo nos dan infor-

mación sobre la magnitud del valor numérico.a

La información de signo se incorpora con un símbolo que precede a la secuen-

cia de dígitos que identifica la magnitud. Se utiliza el símbolo − para identifi-

Binario Octal Hexadecimal Decimal

1101100,110

362,23

A1,03

74,3

A veces, cuando se trabaja con números con signo, el signo

positivo (+) no se escribe: sólo aparece el signo cuando se trata de

un número negativo.

© FUOC • PID_00153515 19 Representación de la información numérica

car las magnitudes negativas y el símbolo + para identificar las magnitudes

positivas:

+23(10 −456(8

−34,5(7 +AF,34(16

1.5. Suma y resta en los sistemas posicionales

Estamos habituados al proceso de suma y de resta de valores numéricos en

base 10. A continuación, analizaremos cuidadosamente un ejemplo en base 10

para entender el proceso de suma en otras bases. Hacemos la suma de los va-

lores numéricos 8341(10 y 2463(10.

Fijémonos en el hecho de que la suma de dos valores numéricos se hace, en los

sistemas posicionales, sumando los dígitos del mismo peso. Ahora bien, la suma

de estos dígitos puede superar el valor de la base de representación (10 en nuestro

ejemplo) y generar, consiguientemente, un transporte (lo que nos “llevamos”).

La suma realiza, por lo tanto, progresando de derecha a izquierda, sumando

en cada etapa los dígitos del mismo peso (los que ocupan la misma posición)

y el transporte de la etapa precedente. La suma de estos tres dígitos da un re-

sultado de dos dígitos: el dígito de la suma, y el dígito de transporte para la

etapa siguiente (que será 0 si la suma de los tres dígitos es inferior al valor b de

la base, 10 en este ejemplo).

El ejemplo siguiente de suma de dos valores hexadecimales sigue las mismas pau-

tas, pero ajustadas al caso de base 16 (donde tenemos dieciséis dígitos distintos):

El proceso de suma en base 2 es análogo:

1 1 ← transportes8 3 4 1 (10

+ 2 4 6 3 (10

1 0 8 0 4 (10 ← resultado

1 ← transportes3 5 8 2 (16

+ A F 1 8 (16

E 4 9 A (16 ← resultado

1 1 1 1 1 1 ← transportes0 1 1 1 0 1 0 0 (2

+ 1 0 1 0 1 1 0 1 (2

1 0 0 1 0 0 0 0 1 (2 ← resultado

El bit (dígito binario) de transporte recibe en inglés el nombre de carry.

Este término es de uso habitual dentro del entorno de los

computadores.

Tabla de suma en base 2transporte + bit de suma

+ 0 1

0 0 + 0 0 + 1

1 0 + 1 1 + 0

© FUOC • PID_00153515 20 Representación de la información numérica

En los anteriores ejemplos precedentes se pone de manifiesto que se puede

producir un transporte en la última etapa de suma. Por lo tanto, el resultado

de una suma de números puede necesitar para su representación un dígito más

que los operandos.

La resta de dos valores numéricos recibe un tratamiento semejante. La opera-

ción también se realiza de derecha a izquierda, operando los dígitos de igual

peso, y considerando el transporte de la etapa precedente. Se obtienen de nue-

vo dos dígitos: el dígito de resta y el dígito de transporte. La particularidad en

esta operación es que el número de menor magnitud (sustraendo) es el que se

debe restar del número de mayor magnitud (minuendo):

El procedimiento en otras bases es idéntico. Sólo hay que adecuarse a la nueva

base y procurar restar la magnitud pequeña de la grande:

En el caso de la operación de resta, no se puede producir ningún transporte en

la última etapa. Por este motivo, el resultado de una resta de números necesitará

para su representación, como máximo, los mismos dígitos que el minuendo.

1.6. Multiplicación y división por potencias de la base

de numeración

En un sistema posicional de base fija, cada dígito tiene un peso bp, donde b es

la base de numeración y p la posición que ocupa el dígito. El TFN nos permite

El resultado de la suma de dos números representados en base b donde

el mayor tiene n dígitos puede requerir un máximo de n + 1 dígitos para

su representación.

8 3 4 1 (10 ← minuendo

1 1 1 ← transportes

− 2 4 6 3 (10 ← subtraendo

5 8 7 8 (10 ← resultado

En inglés, el transporte en el caso de la resta recibe el nombre

de borrow.

A F 1 8 (16 1 0 1 0 1 1 0 1 (2

1 ← transportes 1 1 1 ← transportes

− 3 5 8 2 (16 − 0 1 1 1 0 1 0 0 (2

7 9 9 6 (16 ← resultado 0 0 1 1 1 0 0 1 (2 ← resultado

El resultado de la resta de dos números representados en base b donde

el minuendo tiene n dígitos puede requerir un máximo de n dígitos para

su representación.

© FUOC • PID_00153515 21 Representación de la información numérica

expresar un número en términos de estos pesos, que son potencias de la base

de numeración.

En el caso de los sistemas de representación decimales, la base de numeración

es 10. Por lo tanto, los pesos asociados a los dígitos son potencias de 10. Con-

siguientemente, multiplicar por 10 se traduce en aumentar en una unidad la

potencia de 10 asociada a cada dígito, y dividir por 10 equivale a disminuir en

una unidad la potencia de 10 asociada a cada dígito.

Por ejemplo, el número 56,34(10 se puede expresar en términos de los pesos

asociados a cada dígito siguiendo el TFN:

56,34(10 = 5 · 101 + 6 · 100 + 3 · 10−1 + 4 · 10−2

Si multiplicamos por 10, obtenemos:

56,34(10 · 10 = (5 · 101 + 6 · 100 + 3 · 10−1 + 4 · 10−2) · 10 =

= 5 · 102 + 6 · 101 + 3 · 100 + 4 · 10-1 = 563,4(10.

El efecto que se obtiene es el desplazamiento de la coma fraccionaria. Multi-

plicar por 10 un número en base 10 equivale a desplazar la coma fraccionaria

una posición a la derecha, mientras que dividirlo por 10 equivale a desplazar

la coma una posición a la izquierda. El proceso se puede extender a la multi-

plicación y a la división por una potencia de 10: multiplicar por 10k un núme-

ro en base 10 equivale a desplazar la coma fraccionaria k posiciones a la

derecha, y dividirlo por 10k equivale a desplazar la coma fraccionaria k posi-

ciones a la izquierda.

Este proceso de multiplicación y división por potencias de la base de numera-

ción que aquí encontramos ejemplificado en base 10 es válido para todos los

sistemas de posicionales de base fija b.a

Multiplicación por una potencia de 2 en binario

Para multiplicar un número binario por 2k, desplazaremos la coma fraccionaria k posicio-nes a la derecha. Para multiplicar el 11010(2 por 24, desplazaremos la coma fraccionariacuatro posiciones a la derecha:

11010(2 · 24 = 110100000(2

Multiplicar por bk un número representado en un sistema posicional

de base fija b equivale a desplazar la coma fraccionaria k posiciones a la

derecha.

Dividir por bk un número representado en un sistema posicional de

base fija b equivale a desplazar la coma fraccionaria k posiciones a la iz-

quierda.

Podéis consultar los sistemas de numeración posicionales del subapartado 1.2 de este módulo.

Números sin parte fraccionaria

En un número sin parte fraccio-naria, desplazar la coma k posiciones a la derecha equiva-le a añadir k ceros a la derecha, puesto que la parte fracciona-ria es cero. Por consiguiente, el resultado requerirá k dígitos más para la representación que el número inicial.

© FUOC • PID_00153515 22 Representación de la información numérica

Este resultado que obtenemos de manera directa se puede justificar con los siguientescálculos:

11010(2 · 24 = (1 · 24 + 1 · 23 + 0 · 22 + 1 · 21 + 0 · 20) · 24 =

= (1 · 28 + 1 · 27 + 0 · 26 + 1 · 25 + 0 · 26) = 110100000(2

Por lo tanto, 11010(2 · 24 = 110100000(2.

División por una potencia de 2 en binario

Para dividir un número binario por 2k, desplazaremos la coma fraccionaria k posicionesa la izquierda. Para dividir el 11100(2 por 22, desplazaremos la coma fraccionaria 2 posi-ciones a la izquierda:

11100(2 / 22 = 111(2

Este resultado que obtenemos de manera directa se puede justificar con los siguientescálculos:

11100(2 / 22 = (1 · 24 + 1 · 23 + 1 · 22 + 0 · 21 + 0 · 20) / 22 =

= (1 · 22 + 1 · 21 + 1 · 20 + 0 · 2−1 + 0 · 2−2) = 111(2

Por lo tanto, 11100(2 / 22 = 111(2.

Las operaciones de división por una potencia de la base de numeración de un

número sin parte fraccionaria pueden dar como resultado un número con par-

te fraccionaria: 11100(2 / 24 = 1,11(2. Ahora bien, si estamos en un contexto en

el que se trabaja con números sin parte fraccionaria, podemos dar el resultado

en forma de dos números enteros que reciben el nombre de cociente y resto:

el cociente tiene relación directa con la parte entera del resultado y el resto,

con la parte fraccionaria. En este caso, la operación recibe el nombre de di-

visión entera, mientras que, por oposición, la primera recibe el nombre de

división real.

El cociente y el resto de la división entera de 11100(2 por 24 se pueden obtener

a partir del resultado de la división real 11100(2 / 24 = 1,11(2, identificando el

cociente con la parte entera (cociente = 1(2) y el resto, con la parte fraccionaria

(resto = 11(2)

1.7. Representación en notación científica

Las representaciones de números fraccionarios que aparecen en los apartados

precedentes son del tipo 671,34(10. Aquí encontramos un conjunto de los dí-

gitos que representan la parte entera y un conjunto de dígitos destinados a re-

presentar la parte fraccionaria.

Supongamos que debemos trabajar con números grandes, como por ejemplo

la velocidad de transmisión de la luz en el vacío (c = 299.792.500 m/s) y, si-

El cociente y el resto de una división entera de un número sin parte

fraccionaria por una potencia de la base de numeración se pueden ob-

tener a partir del resultado de división real, identificando el cociente

con la parte entera y el resto, con la parte fraccionaria.

© FUOC • PID_00153515 23 Representación de la información numérica

multáneamente, con números muy pequeños, como por ejemplo la masa de

un electrón (me = 0,00000000000000000000000000000091095 kg). Para re-

presentar números como éstos, encontramos una dificultad importante: nece-

sitamos un número elevado de dígitos. Como en el segundo caso, muchos de

estos dígitos pueden ser cero y, por lo tanto, la eficiencia de la representación

puede ser bastante reducida.

La notación científica es una estrategia que permite superar esta dificultad, y

representar números muy grandes y números muy pequeños con un conjunto

de dígitos reducido.

Los siguientes números están en notación científica:

+2,997925(10 · 108

−6,487567(10 · 10−5

La mantisa contiene los dígitos significativos de la magnitud representada, y

está precedida por el signo de esta magnitud. El exponente marca el número

de posiciones a la derecha (exponente positivo) o a la izquierda (exponente

negativo) que debemos desplazar la coma fraccionaria para obtener el valor

numérico representado. Veamos algunos ejemplos:

+245,86(10 = +2,4586(10 · 102 (donde R = 2,4586(10, b es 10 y e es 2)

−0,0003451(10 = −3,451(10 · 10−4

+0,00000000000000000000000000000091095(10 = +9,1095(10 · 10−31

+299792500(10 = +2,997925(10 · 108

Habitualmente se utiliza este tipo de representación para trabajar con las mag-

nitudes de la física, como por ejemplo la velocidad de transmisión de la luz en

el vacío o la masa de un electrón.

1.8. Suma y resta en notación científica

El proceso de suma y de resta en los sistemas posicionales comporta operar los

dígitos del mismo peso. La virtud de la notación científica es, precisamente, la

capacidad de alterar el peso relativo de los dígitos mediante el exponente.

Los números en notación científica toman la forma:

±R · be

donde + o − indica el signo de la magnitud representada, R es un núme-

ro fraccionario que recibe el nombre de mantisa, b es la base de nume-

ración y e es un número entero que recibe el nombre de exponente.

La notación científica también reci-be el nombre de representación en

coma flotante.

Cuando el número en notación científica es positivo, el símbolo +

ante R se puede obviar.

Cuando el exponente es positivo, no suele aparecer el símbolo +

frente al exponente.

Podéis ver la suma y la resta en los sistemas posicionales del subapartado 1.5 de este módulo.

© FUOC • PID_00153515 24 Representación de la información numérica

Por ejemplo, la primera posición a la izquierda de la coma del número

+1,34(10 · 101 es 101 (ya que +1,34(10 · 101 = +13,4(10), mientras que la pri-

mera posición a la izquierda de la coma del número +45,2(10 · 10−3 es 10−3

(ya que +45,2(10 · 10−3 = +0,00452(10).

Por lo tanto, la dificultad de sumar y restar números en notación científica re-

side en la necesidad de igualar los exponentes de los números que se deben

operar. Para hacerlo, desplazamos la coma del número con menor magnitud

hasta conseguir que el exponente tenga el mismo valor que en el número de

mayor magnitud. A continuación podremos hacer la operación:

1,34(10 · 101 > 45,2(10 · 10−3 → 45,2(10 · 10−3 = 0, 00452(10 · 101

El exponente del resultado de la operación de suma o resta se puede volver a

ajustar si es necesario:

+0,00102(10 · 106 = +1,02(10 · 103

Actividades

8. Haced las siguientes operaciones en la base especificada:a) 111011010(2 +100110100(2 =b) 2345(8 + 321(8 =c) A23F(16 + 54A3(16 =d) 111011010(2 − 100110100(2 =e) 2345(8 − 321(8 =f) A23F(16 − 54A3(16 =

9. Haced las siguientes operaciones en la base especificada:a) 62,48(16 + 35,DF(16 =b) 111101101,11011(2 + 100110100,111(2 = c) 62,48(16 − 35,DF(16 =d) 111101101,11011(2 − 100110100,111(2 =

10. Haced las siguientes multiplicaciones:a) 128,7(10 · 10(10b) AFD(16 · 16(10c) 1101,01(2 · 2(10

11. Encontrad el cociente y el resto de las siguientes divisiones enteras:a) 52978(10 / 10(10b) 3456(16 / 16(10c) 100101001001(2 / 2(10

12. Escribid en notación científica el número +12044,4(10.

13. Identificad la mantisa y el exponente del número −3,143(10 · 1045.

14. Sumad los números +123,34(10 · 103 y +67,89(10 · 105.

15. Restad los números +1223,34(10 · 10−2 y +65,6789(10 · 105

+1, 3 4 0 0 0 (10 · 101

+ +0, 0 0 4 5 2 (10 · 101

+1, 3 4 4 5 2 (10 · 101

+4, 1 3 1 0 5 (10 · 106

− +4, 1 3 0 0 3 (10 · 106

+0, 0 0 1 0 2 (10 · 106

© FUOC • PID_00153515 25 Representación de la información numérica

2. Representación de los números en un computador

En el primer apartado se hace la distinción entre el valor numérico y su re-

presentación o codificación. El valor numérico es único, pero tiene una re-

presentación diferente en cada sistema de numeración. Nuestro objetivo

en este segundo apartado es estudiar las representaciones que permitan al-

macenar y procesar de una manera eficiente los valores numéricos en el in-

terior de un computador.

2.1. Condicionantes físicos

Las restricciones de la tecnología con la que se construyen los computadores

hace que el sistema binario, donde sólo se dispone de dos dígitos, sea el sis-

tema de numeración más adecuado. Internamente, el computador asocia los

dos dígitos con dos valores diferentes de tensión eléctrica (voltaje).

Aunque el sistema de numeración habitual en los computadores es el sistema

binario, trabajar directamente en base 2 suele ser poco práctico para nosotros,

dada la gran cantidad de bits necesarios para representar valores numéricos

usuales. Ahora bien, dada la relación directa que hay entre bases b y bn, es ha-

bitual convertir los valores numéricos internos del computador a hexadecimal,

ya que es considerablemente más compacta y tiene una relación directa con

base 2 (puesto que 16 es potencia de 2, 16 = 24).a

Aunque se utilice la base 2 dentro de los computadores, las unidades funcio-

nales del computador no suelen trabajar bit a bit, sino que generalmente pro-

cesan cadenas de bits de una longitud determinada.

Por las mismas características del sistema binario, hay unas longitudes deter-

minadas que ofrecen un rendimiento computacional más elevado: son las ca-

denas cuya longitud es una potencia de 2.

Las cadenas adecuadas son, por lo tanto, las de longitud 2, 4, 8, 16, 32, 64,

etc. Las cadenas de 8 bits reciben el nombre de byte u octeto. Cuando dis-

Un dígito binario recibe el nombre de bit. Los bits pueden tomar los

valores 0 y 1. Un bit constituye la unidad de información que se define

como la cantidad de información asociada a la respuesta de una pre-

gunta formulada de manera no ambigua, en la que sólo son posibles

dos alternativas de respuesta y que, además, tienen la misma probabi-

lidad de ser elegidas.

Terminología

A lo largo del texto, utilizare-mos indistintamente repre-sentación y codificación para referirnos a la secuencia de dígitos asociada a un valor numérico en un sistema de representación numérica.

Bit es un acrónimo de la expresión inglesa binary digit.

© FUOC • PID_00153515 26 Representación de la información numérica

ponemos de 16 bits, hablamos de cadenas de 2 bytes; de 4 bytes para cadenas

de 32 bits; etc.

Hay una longitud característica relacionada con un computador, que denomina-

mos palabra y que depende de la arquitectura particular de cada computador.

A pesar de las mejoras tecnológicas, la capacidad de almacenamiento de los com-

putadores es finita. Esto condiciona, y mucho, la representación numérica dentro

de los computadores, sobre todo cuando se trabaja con números que requieren

un número infinito de dígitos para representar la parte fraccionaria, como por

ejemplo los casos bien conocidos de los números irracionales, como .

Estas limitaciones físicas que tienen los computadores en la representación de

valores numéricos son semejantes a las que encontramos cuando trabajamos

con lápiz y papel. Por ejemplo, en los cálculos aritméticos manuales trabaja-

mos con una aproximación de los números irracionales. Para el número π, uti-

lizamos el valor 3,14(10 o el 3,1416(10 según el grado de precisión necesario. De

una manera semejante, dentro de los computadores se trabaja con aproxima-

ciones de aquellos números que no se pueden representar de manera exacta.

De esta manera, si representamos el número π por el valor 3,14(10, comete-

mos un error igual a ⏐π − 3,14(10⏐ = 0,00159…, mientras que si trabajamos con

el valor 3,1416(10 para representar el número π, el error es ⏐π − 3,1416(10⏐ =

7,3464102… · 10–6.

Cuando trabajamos con lápiz y papel, escribimos los números de la manera

más práctica y adecuada. Podemos escribir 03, 3,00, 3,000 o simplemente 3.

En cambio, dentro de los computadores hay que seguir unas pautas más rígi-

das, un formato que especifique y fije el número de dígitos que hay que utili-

zar o el número de dígitos fraccionarios con los que se trabaja.

Una palabra es la cantidad de información con la que opera un compu-

tador.

Cuando un número no se puede representar de manera exacta dentro

de un computador, se comete un error de representación. Este error es

la distancia entre el número que queremos representar y el número re-

presentado realmente.

Un formato de representación numérica es la manera específica en la

que se deben representar los valores numéricos con los que se trabaja.

Evolución de la longitud típica de la palabra

La longitud típica de la palabra evoluciona con la tecnología. Actualmente, la palabra de los procesadores que equipan los computadores de carácter ge-neral es de 32 bits, pero cada vez aparecen más procesado-res que trabajan con palabras de 64 bits. Los procesadores más veteranos y muchos de los actuales microcontroladores trabajan con palabras de 4, 8 o 16 bits.2

Los números que se pueden representar de manera exacta reciben el nombre de números

representables.

© FUOC • PID_00153515 27 Representación de la información numérica

Por ejemplo, supongamos que tenemos definido un formato de representa-

ción de la forma x1x0, x–1x–2, donde cada dígito xi corresponde a un dígito deci-

mal. En este formato, el número 3 se debe representar como 03,00 y el 10,2,

como 10,20.

Una vez definido el formato de la representación numérica, queda fijado el

conjunto de números que pueden ser representados.a

En los siguientes subapartados, se describen los parámetros que nos ayudan a

medir la eficiencia de un formato de representación numérica: el rango de re-

presentación, la precisión y el error de representación.

2.1.1. Rango de representación

Dado que el conjunto de números que se pueden representar es finito, los ten-

dremos delimitados dentro de un intervalo que recibe el nombre de rango.

De esta manera, fijado el formato x1x0,x–1x–2 en la base 10, sólo podremos re-

presentar números entre el 00,00(10 (el menor número representable en este

formato) y el 99,99(10 (el mayor número representable en este formato). El nú-

mero 935(10, por ejemplo, no se puede representar en este formato, ya que no

está dentro del intervalo de representación.

La notación que se utiliza para especificar un rango de representación es:

[a, b]

donde a es el menor número que podemos representar en el formato espefica-

do y b, el mayor.

Los números que están fuera del rango de representación de un formato deter-

minado no son representables en aquel formato.a

El rango de un formato de representación numérica es el menor in-

tervalo que contiene todos los números representables. Los límites

del intervalo vienen determinados por el mayor y el menor número

que se pueden representar.

Dentro del intervalode representación…

… sólo se puede representar un conjunto de números. Aunque en el ejemplo el inter-valo es [0, 99,99], el número 34,789(10 no se puede repre-sentar de manera exacta, ya que tiene tres dígitos fraccionarios.

La notación que se utiliza para definir un intervalo de números

representables es [a,b], donde a y b son los límites del intervalo y

forman parte del mismo.

© FUOC • PID_00153515 28 Representación de la información numérica

Hay una limitación inherente al número de bits disponibles en un formato de

representación: con n dígitos en base b, disponemos de bn códigos o combina-

ciones de dígitos. Cada una de estas combinaciones puede representar un va-

lor numérico. Por lo tanto, con n dígitos en base b podremos representar un

máximo de bn números distintos.a

De esta manera, en una representación de 5 bits disponemos de 25 = 32

combinaciones diferentes. Podremos representar un máximo de 32 valores

numéricos. El tipo de codificación que se haya utilizado determinará cuáles

son estos valores.

Cuando trabajamos en base 10, sabemos que con cuatro dígitos disponemos

de 104 códigos diferentes (combinaciones de los cuatro dígitos decimales). Si

usamos estos códigos para representar números naturales, podremos represen-

tar desde el 0000 (0(10), hasta el 9999 (104 − 1).

2.1.2. Precisión

Estamos habituados a trabajar de manera dinámica con la precisión, y la ajus-

tamos automáticamente a nuestras necesidades. Si medimos la longitud de

una tabla en metros, trabajamos con dos o, como mucho, con tres dígitos frac-

cionarios. Decimos “esta tabla mide 1,52 m”, pero difícilmente diremos “esta

tabla mide 1,526246 m”.

De manera intuitiva, podemos decir que un formato de representación que

trabaje con dos dígitos fraccionarios tendrá suficiente precisión para esta apli-

cación. Un formato de estas características nos permitirá distinguir 1,52 m

de 1,53 m, pero no de 1,5234 m. Decimos que la precisión de este formato es de

0,01 m, que es la distancia entre dos valores consecutivos representables en

este formato.

La precisión de un formato de representación numérica es la distancia

entre dos números representables consecutivos.

En la mayoría de los formatos…

… de representación la dis-tancia entre dos números representables consecutivos cualesquiera es la misma. Ahora bien, cuando se utiliza la notación científica la preci-sión es variable y depende del valor del exponente.

© FUOC • PID_00153515 29 Representación de la información numérica

2.1.3. Error de representación

Consideramos un formato de representación con cuatro dígitos en base 10, de

los cuales dos son fraccionarios. Los números representables en este formato

son de la forma x1x0,x–1x–2, donde xi es un dígito de la base 10.

En este formato podemos representar el 12,34(10 o el 45,20(10 de una mane-

ra exacta. En cambio, el número 15,027(10 no se puede representar de una

manera exacta. Si debemos trabajar con este número en este formato, ten-

dremos que utilizar una aproximación. Podemos aproximar este número

por un número representable cercano como el 15,03(10. Trabajar con una

aproximación del número en lugar de hacerlo con una representación

exacta comporta cometer un error. En este caso, el error que se comete es

|15,03(10 − 15,026(10 | = 0,004(10 .

El error de representación que se puede cometer en un formato determinado

está relacionado directamente con el número de dígitos fraccionarios dispo-

nibles.a

Volvamos al formato x1x0,x–1x–2 en base 10. El número 23,457(10 no es represen-

table en este formato. Lo podemos aproximar por el 23,45(10 o por el 23,46(10,, que

son los dos números representables más cercanos. Los dos números están a

una distancia del 23,457(10 inferior a 0,01, que es la precisión (distancia entre

dos números representables consecutivos) de este formato.

Los números que no están dentro del rango de representación del formato no

son representables ni aproximables.

2.1.4. Aproximaciones: truncamiento y redondeo

Acabamos de establecer que el número 23,45(10 o el número 23,46(10 son bue-

nas aproximaciones del número 23,457(10 al formato x1x0,x−1x−2 en base 10.

El error de representación ε es la distancia entre el número X que que-

remos representar y el número representable X̂ con el que lo aproxima-

mos. Es decir, ε = |X − X̂ |

En general, podemos establecer que la precisión delimita el error de re-

presentación máximo que se llegará a cometer en un formato al hacer

la aproximación de un número no representable que está dentro del

rango de representación.

Rangos de representación

En el formato x1x0,x–1x–2 en base 10, el rango de represen-tación es [0, 99,99]. Un núme-ro como el 128(10, que está fuera del rango de representa-ción, no es representable. No se considera que 99,99(10 sea una aproximación válida para este número en este formato.

© FUOC • PID_00153515 30 Representación de la información numérica

Debemos elegir una de las dos posibilidades, por lo cual estableceremos un cri-

terio de elección. Este proceso de elección se denomina aproximación o

cuantificación. Los criterios de elección más habituales son el truncamiento

y el redondeo.

1) Truncamiento

El truncamiento es el criterio de cuantificación más directo y sencillo de apli-

car, ya que no comporta ningún tipo de cálculo y consiste en ignorar los dígi-

tos que sobran. En el formato x1x0,x−1x−2 en base 10, este criterio aproxima el

número 23,457(10 por el 23,45(10, fruto de ignorar el último dígito, que no cabe

en el formato disponible.

Si aplicamos el criterio de truncamiento al formato que tenemos definido, en-

contramos que el 23,451(10, el 23,456(10 y el 23,459(10 se aproximan al mismo

número representable, el 23,45(10, el número que queda si ignoramos los dígi-

tos fraccionarios que no caben en el formato x1x0,x–1x–2 en base 10.

Ahora bien, el error de representación cometido en cada caso es distinto. El

error es 0,001 para el 23,451(10 (ya que ⏐23,451(10 − 23,45(10⏐ = 0,001), 0,006

para el 23,456(10 y 0,009 para el 23,459(10. En todos los casos, el error de repre-

sentación es inferior a la precisión, que es 0,01 (distancia entre dos números

representables consecutivos, por ejemplo 23,45(10 y 23,46(10).

2) Rendondeo

Con el truncamiento, el error de representación del número 23,459(10 en el for-

mato x1x0,x−1x−2 en base 10 es 0,009 (⏐23,459(10 − 23,45(10⏐= 0,009), porque se

La cuantificación o aproximación por truncamiento consiste en des-

preciar los dígitos fraccionarios que no caben en el formato disponible.

El proceso de truncamiento no comporta ningún tipo de cálculo.

En una aproximación por truncamiento, el error máximo de represen-

tación es igual a la precisión del formato de representación.

La gran ventaja del truncamiento es que no comporta ningún tipo

de cálculo aritmético.

© FUOC • PID_00153515 31 Representación de la información numérica

aproxima por el número 23,45(10. Ahora bien, si aproximásemos el 23,459(10 por

el 23,46(10, el error de representación sería 0,001 (⏐23,46(10 − 23,459(10⏐ = 0,001),

es decir, un error menor. El 23,46(10 es más cercano al número que quere-

mos representar y sería más lógico trabajar con el número representable

más cercano que con el que obtenemos por truncamiento. Esta manera de

proceder recibe el nombre de redondeo o aproximación al más próximo.

Si aplicamos el criterio de redondeo al formato x1x0,x−1x−2 en base 10, el

23,451(10 se aproxima por el 23,45(10, mientras que el 23,456(10 o el 23,459(10

se aproximan por el 23,46(10, que les es más cercano. El error de representación

es 0,001 para el 23,451(10, 0,004 para el 23,456(10 y 0,001 para el 23,459(10. El

error de representación cometido es inferior a la mitad de la precisión, es decir,

inferior a 0,005 en este caso.

Una manera sencilla de aplicar el redondeo al número 23,459(10 al formato

x1x0,x−1x−2 en base 10 es sumarle la mitad de la precisión (es decir, 0,005) y a con-

tinuación hacer el truncamiento del resultado: 23,459(10 + 0,005(10 = 23,464(10,

que truncado en dos dígitos fraccionarios es el 23,46(10, el número representa-

ble más cercano al 23,459(10.

Aproximación por redondeo

Para aproximar por redondeo el número 1,526246(10 al formato x1x0,x–1x–2x–3x–4 en base 10,procederemos de la siguiente manera:

1) Sumar la mitad de la precisión del formato de representación al número que se quiereaproximar:

1,526264(10 + 0,00005(10 = 1,526314(10

La cuantificación o aproximación por redondeo consiste en elegir el

número representable más cercano al número que queremos represen-

tar. El proceso de redondeo comporta operaciones aritméticas.

En una aproximación por redondeo, el error máximo de representa-

ción es igual a la mitad de la precisión del formato de representación.

Para aproximar un número por redondeo, debemos hacer lo siguiente:

1) Sumar la mitad de la precisión del formato de representación al nú-

mero que se quiere aproximar.

2) Truncar el resultado de la suma según el número de dígitos fraccio-

narios disponibles en el formato de representación.

El número que se obtiene por truncamiento…

… coincide con el que se obtie-ne por redondeo, siempre que el número resultante por truncamiento sea el número representable más cercano al número que queremos re-presentar.

Con el redondeo reducimos el error máximo a la mitad, pero tiene el

inconveniente de requerir cálculos aritméticos.

Para hacer el redondeo, sumamos la mitad de la precisión porque equivale a sumar la mitad de la

distancia entre dos números representables consecutivos.

© FUOC • PID_00153515 32 Representación de la información numérica

2) Truncar el resultado de la suma según el número de dígitos fraccionarios disponiblesen el formato de representación:

1,526314(10 → 1,5263(10

Por lo tanto, el número 1,526264(10 se aproxima por redondeo a este formato por el1,5263(10.

El inconveniente del redondeo es que, a diferencia del truncamiento, compor-

ta operaciones aritméticas. a

2.1.5. Desbordamiento

Las características y restricciones propias de los computadores hacen que el

formato de representación de los valores numéricos deba estar plenamente de-

finido. El formato establecido fija el rango de representación.

De esta manera, si el formato es de 4 bits para representar números naturales,

el rango en decimal queda fijado en [0000(2, 1111(2] = [0(10, 15(10]. No podremos

representar números fuera de este rango. Cualquier operación que genere como

resultado un valor numérico fuera de este rango provocará desbordamiento.

En la figura siguiente, se muestra de manera gráfica una situación en la que se

produce desbordamiento:

Podemos ver un ejemplo de desbordamiento en la siguiente operación de su-

ma, donde el formato es de 6 bits para representar números naturales:

El desbordamiento aparece cuando el número que se debe representar

supera el rango de representación disponible. Esto quiere decir que el

número no cabe en el formato disponible para representarlo.

1 1 1 ← transportes

1 0 1 1 1 0 (2

+ 1 0 0 1 0 1 (2

1 0 1 0 0 1 1 (2 ← resultado↑

desbordamiento

En inglés, el término desbordamiento recibe el nombre de overflow.

© FUOC • PID_00153515 33 Representación de la información numérica

El resultado de la suma anterior requiere 7 bits y por tanto está fuera del rango

de representación del formato en el que se trabaja. El formato definido sólo

puede almacenar los 6 bits de menos peso. No puede incluir el bit más signi-

ficativo, porque no cabe en los 6 bits disponibles y, por lo tanto, el resultado

almacenado es erróneo.

El desbordamiento puede aparecer en todos los sistemas de representación nu-

mérica, pero se manifiesta de distintas maneras, según el sistema de represen-

tación.a

Hay un tipo especial de desbordamiento que recibe el nombre de desborda-

miento a cero y que aparece cuando un número de magnitud pequeña, pero

diferente de cero, finalmente se acaba representando, a causa del error de re-

presentación, como cero.

Esta situación es relevante por las implicaciones que comporta la reducción a

cero de un número distinto de cero. Operaciones que a priori no deberían pre-

sentar ningún tipo de dificultad pueden llegar a ser irresolubles. Esto es espe-

cialmente crítico en el caso de las operaciones de división.

Actividades

16. Determinad el rango y la precisión de los formatos x1x0,x−1x−2x−3 y x2x1x0,x−1x−2, don-de xi es un dígito decimal.

17. Determinad si el número 925,4(10 se puede representar en los formatos indicados enla actividad 16.

18. Representad en el formato x1x0,x−1x−2, donde xi es un dígito decimal, los siguientesnúmeros:a) 10(10b) 10,02(10c) 03,1(10 d) 03,2(10

19. Determinad la cantidad de números que se pueden representar en el formatox2x1x0,x−1x−2x−3, donde xi es un dígito decimal.

20. Calculad el error de representación (con aproximación por truncamiento) que se co-mete cuando representamos en el formato x2x1x0,x−1x−2, donde xi es un dígito decimal,los siguientes números:a) 22,345(10b) 45,89(10c) 55,6356(10d) 23,56(10

21. Elegid la representación hexadecimal que utilice el mínimo número de dígitos y que per-mita representar el número 16,25(10. ¿Cuál es el rango y la precisión de esta representación?

22. ¿Cuál es el menor número que hay que sumar a 8341(10 para que se produzca desbor-damiento en una representación decimal (base 10) de cuatro dígitos?

El desbordamiento a cero se produce cuando intentamos representar un

número distinto de cero que es de menos magnitud que la precisión del

formato de representación y la aproximación por truncamiento o redon-

deo utilizada hace que el número finalmente representado sea el cero.

En inglés, el desbordamiento a cero recibe el nombre de underflow.

© FUOC • PID_00153515 34 Representación de la información numérica

2.2. Números naturales

Los números naturales son los números sin parte fraccionaria y sin signo. Es

decir, son los miembros de la sucesión: 0, 1, 2, 3, 4, 5, 6…

Para la representación de estos números dentro de los computadores, nos te-

nemos que ajustar al número de bits disponibles en el formato de representa-

ción y en la base de representación.

Habitualmente se trabaja en base 2 y, eventualmente, en base 16 para reducir

la longitud de los números, aprovechando la correspondencia directa entre un

dígito hexadecimal y un grupo de cuatro dígitos binarios.

Al tratarse de números naturales, la precisión de la representación es 1, ya

que no tenemos dígitos fraccionarios, mientras que el rango depende del

número de dígitos disponibles. Los márgenes del rango los fijan la mayor

magnitud representable, que con n bits es 11 ···n 1(2 y equivale al valor decimal

2n − 1, y la menor magnitud representable, que es cero (cuando todos los bits

son cero).

El rango de representación se puede ampliar si aumentamos el número de bits

de la representación. La ampliación del número de bits de un formato de re-

presentación recibe el nombre de extensión.

La representación del número natural 10(10 en un formato de 5 bits es 01010(2.

La extensión de esta codificación a un formato de 8 bits se consigue añadiendo

ceros a la izquierda hasta completar los 8 bits del formato nuevo, con lo cual

la nueva codificación será 00001010(2.

Las operaciones de suma y de resta siguen las pautas expuestas anteriormente.

Sólo hay que remarcar la posibilidad de que aparezca desbordamiento si el re-

sultado de una operación de suma no cabe en el formato de representación,

una situación que detectaremos por la existencia de transporte en la última

El rango de representación de los números naturales en un formato de

n bits es, en decimal, [0, 2n − 1], y su precisión es 1.

La extensión de los números naturales representados en un formato de

n bits a un formato de m bits, con m mayor que n, se consigue añadien-

do, a la izquierda de la codificación, los ceros necesarios hasta comple-

tar los m bits del formato nuevo.

Podéis ver los cambios de base entre b y bn del subapartado 1.3.3 de este módulo.

Cambio de base del número 10(10 a base 2

Siguiendo el método basado en el teorema de la división entera:10 = 5 · 2 + 015 = 2 · 2 + 112 = 1 · 2 + 011 = 0 · 2 + 110(10 = 1010(2

© FUOC • PID_00153515 35 Representación de la información numérica

etapa de suma. El siguiente ejemplo de suma de números naturales en un for-

mato de 6 bits pone de manifiesto esta situación:

La suma de estos valores numéricos produce desbordamiento, que pode-

mos detectar porque hay un transporte en la última etapa de suma. Así

pues, el resultado no cabe en el formato de 6 bits disponibles para la repre-

sentación. El resto de los números naturales no puede dar lugar a desbor-

damiento.

Las operaciones de multiplicación y división entera por potencias de la base

de numeración se ajustan a los procedimientos ya descritos.

La operación de división entera por una potencia de la base de numeración no

puede dar lugar a desbordamiento, puesto que da como resultado dos números

naturales (cociente y resto) que son menores que el dividendo. La multipli-

cación dará desbordamiento cuando el resultado supere el número de dígitos

disponibles en el formato.a

2.3. Números enteros

El conjunto de los números enteros es el conjunto de los números con signo

y sin parte fraccionaria, incluyendo el cero: …−3, −2, −1, 0, +1, +2, +3… El ele-

mento destacable respecto de los números naturales es la presencia de un sig-

no que indica si la magnitud es positiva o negativa.

Para incorporar la información adicional que supone la inclusión del signo en

la representación de los valores numéricos dentro de los computadores, hay

diferentes alternativas. En los siguientes subapartados, describimos las más

utilizadas: signo y magnitud, complemento a 2 y exceso a M.

1 1 ← transportes

1 1 1 0 1 0 (2

− 0 1 0 1 0 1 (2

1 0 0 1 1 1 1 (2 ← resultado

desbordamiento

El desbordamiento en la suma de dos números naturales se produce

cuando tenemos un transporte en la última etapa de suma. La ope-

ración de resta de números naturales no puede dar lugar a desborda-

miento.

Podéis ver la suma y la resta en los sistemas posicionales del subapartado 1.5 de este módulo.

La suma de dos naturales

La suma de dos números natu-rales de n bits da lugar a un resultado que como máximo requiere n + 1 bits para su representación.

La resta de dos naturales

La resta de números naturales no puede dar lugar a desborda-miento, porque debemos restar la magnitud pequeña de la grande, con lo cual el resultado será menor o igual al mayor de los dos operandos. Restar la magnitud grande de la magni-tud pequeña no es una opera-ción válida dentro del conjunto de los números naturales, por-que el resultado debería ser un número con signo.

Podéis ver la multiplicación y la división por potencias de la base de numeración en el subapartado 1.6 de este módulo.

La división de dos naturales

La operación de división sobre números naturales tiene que ser la división entera, puesto que los números naturales no tienen parte fraccionaria.

© FUOC • PID_00153515 36 Representación de la información numérica

2.3.1. Representación de enteros en signo y magnitud en base 2

Signo y magnitud es, probablemente, la manera más intuitiva de representar

números con signo. En la representación con el formato de signo y magni-

tud de los números binarios con signo, el bit más significativo (MSB) se reserva

para almacenar el signo y el resto de los bits se dejan para representar la mag-

nitud del valor numérico. Un 1 en el dígito más significativo indica signo ne-

gativo, mientras que un 0 indica signo positivo.

De esta manera, si la cadena de bits 101001(2 representa un valor numérico co-

dificado en el sistema de signo y magnitud, sabremos que se trata de un valor

negativo, puesto que el bit más significativo es 1. La magnitud representada

será 01001(2, que en base 10 corresponde a 9(10. Consiguientemente, el núme-

ro codificado en esta cadena de bits es el valor −9(10.

La magnitud a la que se hace referencia en esta representación es un valor en-

tero, ya que tratamos sobre la representación de números enteros. Ahora bien,

en este sistema de representación también es habitual codificar números con

parte fraccionaria, tal y como se explica más adelante.a

Representación en signo y magnitud

Dentro del computador, la base de trabajo habitual es la base 2. Para representar el valor−12(10 en el sistema de signo y magnitud, con seis dígitos y base 2, deberemos convertirla magnitud 12(10 a base 2 (12(10 = 1100(2) y poner el bit más significativo de la represen-tación (el bit de más a la izquierda) en 1. La representación será, por lo tanto, 101100(2.

El valor +12(10 se representará en las mismas condiciones como 001100(2. Sólo cambia elvalor del dígito más significativo. Los dígitos que codifican la magnitud no varían.

Rango de representación en signo y magnitud y base 2

El formato de signo y magnitud es simétrico, es decir, una vez fijado un nú-

mero de dígitos para la representación, se pueden representar tantos valores

positivos como negativos. De esta manera, si disponemos de 4 bits para repre-

sentar valores numéricos en signo y magnitud, destinaremos el dígito de más

peso al signo. El resto contendrá la magnitud:

a) Valores posibles de signo:

0 → +

1 → −

Con n bits para la representación, un valor numérico entero codificado en

signo y magnitud viene determinado por la cadena de bits xn−1xn−2…x1x0,

donde xn−1 representa el signo y xn−2…x1x0, la magnitud. El bit más sig-

nificativo (xn−1) representa un signo positivo cuando el valor sea 0 y un

signo negativo cuando el valor sea 1.

MSB y LSB

MSB es la abreviación de most significant bit, es decir, el bit más significativo de la repre-sentación, que se corresponde con el dígito del extremo iz-quierdo. LSB es la abreviación de least significant bit, es decir, el bit menos significativo de la representación, que se corres-ponde con el dígito del extre-mo derecho.

Cambio de base del número 12(10 a base 2

Siguiendo el método basado en el teorema de la división entera:12 = 6 · 2 + 016 = 3 · 2 + 013 = 1 · 2 + 111 = 0 · 2 + 112(10 = 1100(2

© FUOC • PID_00153515 37 Representación de la información numérica

b) Valores posibles para la magnitud:

000(2 = 0(10 100(2 = 4(10

001(2 = 1(10 101(2 = 5(10

010(2 = 2(10 110(2 = 6(10

011(2 = 3(10 111(2 = 7(10

Si combinamos signo y magnitud, podemos representar los valores enteros en-

tre –7 y +7. Por lo tanto, el rango de representación es [−7, +7].

Si aplicamos esta expresión al caso de 4 bits, tenemos:

[−(24−1 − 1), 24−1 − 1] = [−(23 − 1), 23 − 1] = [−7, +7]

que es el rango al cual habíamos llegado de manera experimental.

Si fuese necesario ampliar el rango de representación, deberíamos hacer una

extensión del formato de signo y magnitud. La extensión del formato de signo

y magnitud se consigue con el aumento del número de bits destinados a la re-

presentación de la magnitud, manteniendo el bit del extremo derecho para la

codificación del signo. La conversión de los valores codificados en el formato

original al nuevo formato extendido se consigue añadiendo los ceros necesa-

rios a la izquierda de la magnitud y a la derecha del signo.

Consiguientemente, el entero negativo 11010(2 codificado en signo y magni-

tud y 5 bits se puede extender a un formato de 8 bits añadiendo ceros a la de-

recha del signo, de manera que la codificación de este mismo número en el

En general, en la representación de signo y magnitud en base 2, el ran-

go de enteros representable con n bits es, en decimal:

[−(2n−1 − 1), 2n−1 − 1]

La precisión del formato de signo y magnitud para la representación de

números enteros es 1, dado que podemos representar todos los números

enteros del rango de representación.

La extensión de los números representados en signo y magnitud en un

formato n bits a un formato de m bits, con m mayor que n, se consigue

añadiendo, a la izquierda de la codificación de la magnitud, los ceros

necesarios hasta completar los m bits del nuevo formato y manteniendo

el bit del extremo derecho para la codificación del signo.

Ventajas del formatode signo y magnitud

El formato de representación de signo y magnitud tiene ven-tajas a la hora de hacer unas operaciones determinadas; por ejemplo, facilita las operacio-nes de multiplicación. Para ha-cer una multiplicación, es posible operar por separado las magnitudes y los signos y jun-tar posteriormente los resulta-dos obtenidos de manera independiente.

© FUOC • PID_00153515 38 Representación de la información numérica

formato nuevo sería 10001010(2. La extensión de números positivos se hace

de la misma manera: la extensión a 8 bits de la codificación en signo y mag-

nitud del entero positivo 01010(2 nos lleva al 00001010(2.

2.3.2. Suma y resta en signo y magnitud

Aunque intuitivamente podría parecer el método más sencillo y directo de re-

presentar números con signo, el sistema de signo y magnitud presenta dificul-

tades para llevar a cabo la operación aritmética más habitual: la suma.

La suma de dos valores positivos o de dos valores negativos no presenta gran-

des problemas. Sencillamente, se identifica el signo de las magnitudes con el

análisis del bit de más peso, se suman las magnitudes y se aplica el signo co-

rrespondiente al resultado. En la suma de las dos magnitudes, puede haber

desbordamiento.

Para sumar los números 101000(2 y 101010(2 codificados en signo y magnitud

y 6 bits, seguiremos el siguiente procedimiento:

Ahora bien, la suma de un valor positivo y un valor negativo es más compleja.

En este caso, debemos analizar las magnitudes para saber cuál es la mayor y

restar la menor magnitud de la mayor magnitud. Finalmente, debemos aplicar

al resultado el signo de la mayor magnitud.

Para sumar números 001000(2 y 101010(2 codificados en signo y magnitud y 6

bits, procederemos de la siguiente manera:

Inconvenientes del formato de signoy magnitud

Los inconvenientes principales del sistema de signo y magni-tud son la complejidad de las operaciones de suma y resta y la existencia de dos representa-ciones para el valor 0: un 0 po-sitivo cuando la magnitud es 0 y el signo también; y un 0 ne-gativo, cuando la magnitud es 0 y el signo 1.

© FUOC • PID_00153515 39 Representación de la información numérica

En las operaciones de suma y resta de números codificados en signo y magnitud,

se puede producir desbordamiento sólo si sumamos números del mismo signo

o si restamos números de signo contrario. En estos casos, detectaremos el pro-

blema de desbordamiento en la operación de suma o resta de los módulos.

Para sumar los números 101010(2 y el 111010(2, codificados en signo y magni-

tud y 6 bits, examinaremos en primer lugar los signos. Se trata de dos números

negativos, ya que el bit de más peso de los dos es 1. Por lo tanto, procederemos

a la suma de las magnitudes:

La suma de estos módulos en este formato provoca desbordamiento, ya que

tenemos un transporte en la última etapa. Por lo tanto, la suma de estos dos

números en signo y magnitud en este formato de 6 bits produce desborda-

miento. Esto quiere decir que el resultado de la operación no cabe en el forma-

to definido y, por lo tanto, no se puede representar.

2.3.3. Complemento a la base

En la representación de complemento a la base, los valores positivos se re-

presentan de la misma manera que en signo y magnitud, es decir, un valor en-

tero positivo X(b, se representa por:

X(b = 0xn−2xn−3…x1x0

donde 0 indica signo positivo y xn−2… x1x0 es la magnitud.

La representación en complemento a la base se diferencia de la representación

en signo y magnitud en la manera de codificar las magnitudes negativas. La

representación de un número negativo −X(b en complemento a la base es:

−X(b = bn − |X(b|

donde |X(b| es el valor absoluto de X(b.

El desbordamiento en la suma de dos números del mismo signo codi-

ficados en signo y magnitud se produce cuando aparece un transporte

en la última etapa de suma. La suma de un número positivo y un nú-

mero negativo no puede producir desbordamiento.

1 1 1 1 ← transportes

0 1 0 1 0 (2

+ 1 1 0 1 0 (2

1 0 0 1 0 1 (2 ← resultado

↑desbordamiento

© FUOC • PID_00153515 40 Representación de la información numérica

En el sistema de representación de complemento a la base, el rango de valores

enteros que se puede representar con n dígitos es:

[−bn−1, bn−1 − 1]

Cuando se trabaja en base 2, el sistema de complemento a la base recibe el

nombre de complemento a 2, indicado habitualmente por C2 o Ca2.

Representación en complemento a la base

Si asumimos la base 10 y 6 dígitos para la codificación, podemos obtener la representa-ción del valor −12(10 en complemento a la base, de la siguiente manera:

106 − 12(10 = 1000000(10 − 12 = 999988(10

El valor −12(10 se representa como el 999988(10 en complemento a la base y 6 dígitos.

2.3.4. Representación en complemento a 2

El sistema de complemento a 2, abreviado habitualmente por Ca2 o C2, es el caso

particular de representación en complemento a la base en la cual la base es 2. Ac-

tualmente, el Ca2 es el sistema más utilizado para representar números enteros en

los computadores. Las ventajas que presenta respecto de la representación en sig-

no y magnitud son, como se muestra más adelante, la existencia de una codifica-

ción única para el cero y la simplificación de las operaciones de suma y resta.

Como vemos, debemos conocer el número n de bits para encontrar la codifi-

cación.a

Codificación de números negativos en Ca2

Para encontrar la codificación en Ca2 y 6 bits del valor −11010(2, haremos la siguienteoperación:

26 −⏐X⏐ = 1000000(2 −11010(2 = 100110(2

Así pues, la codificación en Ca2 y 6 bits del valor −11010(2 es 100110(2.

El formato de complemento a 2 es un sistema de numeración para repre-

sentar números con signo en la base 2. En complemento a 2 se represen-

tan, por lo tanto, números positivos y números negativos.

Los números positivos en Ca2 se codifican de la misma manera que en

signo y magnitud: el bit del extremo izquierdo es 0, para indicar signo

positivo, y el resto contiene la magnitud.

La codificación de un número negativo X en Ca2 se obtiene a partir de

la operación 2n − |X| en base 2, donde |X| es el valor absoluto de X.

1 0 0 0 0 0 0 (2

1 1 1 1 1

− 1 1 0 1 0 (2

0 1 0 0 1 1 0 (2

Abreviamos complemento a 2 indistintamente con las expresiones C2 o Ca2.

Ventajas del formato de Ca2

La ventajas principales del Ca2 son dos:1) Una codificación única para el cero.2) Simplicidad en las operacio-nes de suma y resta.

Inconvenientes del formato de Ca2

Sin que afecte a la eficiencia dentro de los computadores, los valores de las magnitudes negativas codificadas en Ca2 son más difíciles de reconocer para nosotros.

© FUOC • PID_00153515 41 Representación de la información numérica

La codificación del valor +11010(2 en Ca2 coincide con la codificación en signo y mag-nitud. Tendríamos un 0 para el signo y a continuación 5 bits con la magnitud: el valor+11010(2 se codifica en Ca2 como 011010(2.

Para encontrar la codificación en Ca2 y 8 bits del valor −11010(2, haremos la siguienteoperación:

28 − |X| = 100000000(2 − 11010(2 = 11100110(2.

Rango de representación en Ca2

La siguiente tabla muestra el conjunto de valores enteros representables con 4

bits en signo y magnitud y en complemento a 2 y su correspondencia:

En la tabla se muestra que el rango de valores enteros representables en Ca2 y

4 bits es [−8 , +7] en decimal.

1 0 0 0 0 0 0 0 0 (2

1 1 1 1 1 1 1

− 1 1 0 1 0 (2

0 1 1 1 0 0 1 1 0 (2

Decimal Binario Signo y magnitud Ca2

+7 +111 0111 0111

+6 +110 0110 0110

+5 +101 0101 0101

+4 +100 0100 0100

+3 +011 0011 0011

+2 +010 0010 0010

+1 +001 0001 0001

0 0000000

10000000

−1 −001 1001 1111

−2 −010 1010 1110

−3 −011 1011 1101

−4 −100 1100 1100

−5 −101 1101 1011

−6 −110 1110 1010

−7 −111 1111 1001

−8 −1000 No es representable 1000

En general, el rango de valores enteros que se puede representar con n

bits en el sistema de complemento a 2 es, en decimal:

[−2n−1, 2n−1 − 1]

En la tabla…

… podemos ver que la codifi-cación de los números positi-vos coincide en Ca2 y signo y magnitud y que, por lo tanto, el rango de representación de los positivos es el mismo en los dos sistemas. En cambio, en Ca2 podemos representar un número negativo más que en signo y magnitud. Esta asime-tría reside en el hecho de que en Ca2 tenemos una represen-tación única del cero. Observe-mos que en signo y magnitud tenemos dos codificaciones para el cero: 0000 y 1000.

© FUOC • PID_00153515 42 Representación de la información numérica

Si aplicamos esta expresión al caso de 4 bits:

[−24−1, 24−1 − 1] = [−23, 23 − 1] = [−8 + 7]

que coincide con el rango de valores enteros representados en la tabla anterior.

Se debe analizar con detalle el cambio que comporta en la representación de

los valores numéricos el aumento del número de bits de una codificación en

Ca2, para ampliar el rango de representación o adecuar la representación a un

formato con más bits.

La codificación de los números positivos en Ca2 coincide con la codificación

de los números positivos en signo y magnitud. Por lo tanto, la extensión de

los números positivos en Ca2 a un formato con más bits se consigue de la mis-

ma manera que en signo y magnitud: con la adición a la izquierda de tantos

ceros como sea necesario.a

Para establecer el procedimiento que se debe seguir con los números negati-

vos, tomamos la representación de un entero, el −10(10, y analizamos el cam-

bio. Para encontrar la codificación en Ca2 y 5 bits de este número hacemos el

cálculo siguiente: 25−⏐−10(10⏐ = 32(10 − 10(10 = 22(10. La representación en bi-

nario del 22(10 es la codificación en Ca2 del número entero −10(10, es decir,

10110(2.

La codificación en Ca2 y 8 bits de este mismo valor, el −10(10, la encontrare-

mos haciendo el mismo cálculo: 28 − ⏐−10(10⏐ = 256(10 − 10(10 = 246(10, que, si

hacemos el cambio a base 2, nos da 11110110(2.

La representación del −10(10 en Ca2 y 5 bits es 10110(2, y la representación en

Ca2 y 8 bits es 11110110(2. Para obtener esta segunda representación a partir

de la primera, sólo debemos añadir 3 unos a la izquierda.

Por lo tanto, la extensión de la codificación en Ca2 de un valor negativo se

consigue con la adición de 1 a la izquierda, mientras que la extensión de la co-

dificación en Ca2 de un valor positivo se consigue añadiéndole ceros. Obser-

vemos que en los dos casos, los bits que se añaden coinciden con el valor:

ceros para los positivos y unos para los negativos. Por lo tanto, conseguiremos

la extensión del formato copiando el bit a la izquierda tantas veces como sea

necesario.

La extensión de los números representados en complemento a 2 en un for-

mato n bits a un formato de m bits, con m mayor que n, se consigue co-

piando a la izquierda el bit de signo tantas veces como sea necesario para

completar los m bits del formato nuevo. Este proceso recibe el nombre de

extensión del signo.

Cambio de base del número 22(10 a base 2

Siguiendo el método basado en el teorema de la división entera:22 = 11 · 2 + 011 = 5 · 2 + 115 = 2 · 2 + 112 = 1 · 2 + 011 = 0 · 2 + 122(10 = 10110(2

Cambio de base del número 246(10 a base 2

Siguiendo el método basado en el teorema de la división en-tera:246 = 123 · 2 + 0123 = 61 · 2 + 1261 = 30 · 2 + 1230 = 15 · 2 + 0215 = 7 · 2 + 1247 = 3 · 2 + 1243 = 1 · 2 + 1241 = 0 · 2 + 1246(10 = 11110110(2

© FUOC • PID_00153515 43 Representación de la información numérica

Por consiguiente, el entero negativo 11010(2 codificado en Ca2 y 5 bits se puede

extender a un formato de 8 bits copiando el bit de signo a la izquierda de la repre-

sentación hasta llegar a los 8 bits de la nueva representación. La codificación de

este mismo número en el formato nuevo sería 11111010(2. La extensión de nú-

meros positivos se hace de la misma manera. La extensión a 8 bits de la codifica-

ción en Ca2 01010(2 nos lleva a 00001010(2,, que representa el mismo número.

2.3.5. Cambio de signo en complemento a 2

Para cambiar el signo de un valor numérico codificado en complemento a 2,

seguimos el siguiente proceso:

1) Obtenemos el complemento bit a bit de la representación en Ca2.

2) Sumamos 1 al bit menos significativo de la representación.

El complemento de un dígito xi es = (b − 1) − xi. En el caso de la base 2, el

complemento del dígito 0 es el 1, como vemos si aplicamos la expresión ante-

rior al caso de la base 2: (2 − 1) − 0 = 1; el complemento del dígito 1 es el 0,

puesto que (2 − 1) − 1 = 0.

Cambio de signo en complemento a 2

Para hacer el cambio de signo del valor numérico 11000110(2 (que, si seguimos el proce-dimiento explicado en el apartado siguiente, veríamos que se trata del −58(10), que estácodificado en complemento a 2 y 8 dígitos, hacemos la siguiente operación:

De esta operación resulta el 00111010(2, que codifica la misma magnitud, pero con signopositivo.

Una manera alternativa y, eventualmente, más rápida de hacer un cambio de

signo es la que se explica a continuación:

1) Analizar el número de derecha a izquierda.

2) Mantener los bits hasta el primer 1 que se encuentre (incluyéndolo).

3) Hacer el complemento del resto de los bits.

Cambio de signo en complemento a 2

Para hacer el cambio de signo del valor numérico 11000110(2 (que, si seguimos el proce-dimiento explicado en el apartado siguiente, veríamos que se trata del −58(10), que estácodificado en complemento a 2 y 8 dígitos, seguiremos el siguiente procedimiento:

11000110^ se mantienen los bits hasta aquí (primer 1 que encontramos, incluido éste).10

^ complementar los bits a partir de este punto. 001110

1 1 0 0 0 1 1 0 (2 ← valor numérico inicial

1

0 0 1 1 1 0 0 1 (2 ← complemento bit a bit de la expresión inicial

+ 1 ← sumamos 1 al bit menos significativo del formato

0 0 1 1 1 0 1 0 (2

Complemento bit a bit

Se entiende por complemento bit a bit la sustitución de cada dígito binario por su comple-mentario. Cuando trabajamos en base 2, el complementario del dígito 0 es el 1 y el comple-mentario del dígito 1 es el 0.

xi

© FUOC • PID_00153515 44 Representación de la información numérica

De esta operación resulta el 00111010(2, que codifica la misma magnitud, pero con signopositivo.

Para hacer el cambio de signo del valor numérico 00011110(2 (que, si seguimos el proce-dimiento explicado en el apartado siguiente, veríamos que se trata del +30(10), que estácodificado en formato de complemento a 2 con 8 dígitos, seguiremos el siguiente proce-dimiento:

00011110^ se mantienen los bits hasta aquí (primer 1 que encontramos, incluido éste). 10

^ complementar los bits a partir de este punto. 111000

Con esta operación nos queda el 11100010 (−30(10), que codifica la misma magnitud,pero con signo negativo.

Una alternativa a la operación 2n − |X(2| para encontrar la representación en

Ca2 de un valor negativo es aplicar un cambio de signo a la representación

en Ca2 de la magnitud positiva.

La operación es reversible, es decir, si aplicamos un cambio de signo a la codi-

ficación en Ca2 de la magnitud negativa, encontramos la codificación en Ca2

de una magnitud positiva.a

2.3.6. Magnitud de los números en complemento a 2

Conocer la magnitud de un número positivo en Ca2 no presenta dificultades.

La codificación de los valores positivos en Ca2 es la misma que en signo y

magnitud. Por lo tanto, separamos el bit de más peso y el resto de los bits son

directamente la magnitud. Para conocer la magnitud en base 10 del número

0101(2 codificado en Ca2, separamos el bit de más peso y hacemos un cambio

de base del resto de los bits aplicando el TFN:

0101(2 → 0 101

101(2 = 1 · 22 + 0 · 21 + 1 · 20 = 5(10

Por lo tanto, la cadena de bits 0101 codifica el valor +5(10 si la interpretamos

como un número en Ca2.

Para encontrar la magnitud de un número negativo codificado en Ca2, debe-

mos proceder de manera distinta. Disponemos de dos alternativas:

1) Partir de la expresión 2n − |X|, que es la que hemos utilizado para definir la

codificación de los números negativos en Ca2. A partir de esta expresión, y si

La codificación en Ca2 de las magnitudes negativas se puede conseguir

a partir de un cambio de signo en la codificación de la magnitud posi-

tiva en Ca2.

© FUOC • PID_00153515 45 Representación de la información numérica

aplicamos el TFN, podemos derivar otra que permite conocer con facilidad la

magnitud decimal de un valor numérico negativo expresado en Ca2.

Obtención de la magnitud decimal de un valor negativo codificado en Ca2 por aplicación del TFN

Para conocer el valor decimal que corresponde al valor 10001010(2 que está expresado enel sistema de complemento a 2, podemos hacer el cálculo siguiente:

10001010(2 = −1 · 27 + 0 · 26 + 0 · 25 + 0 · 24 + 1 · 23 + 0 · 22 + 1 · 21 + 0 · 20 = = −128 + 10 = −118(10

10001010(2 = −118(10

2) Aplicar un cambio de signo a la representación en Ca2 del valor negativo:

Obtención de la magnitud decimal de un valor negativo codificado en Ca2 por cambio de signo

Para conocer el valor decimal que corresponde al valor 10001010(2 que está expresado enel sistema de complemento a 2, podemos hacer el siguiente cálculo:

1) Cambio de signo del número en Ca2:

2) Hacer un cambio de base con el método basado en el TFN:

01110110(2 = 0 · 27 + 1 · 26 + 1 · 25 + 1 · 24 + 0 · 23 + 1 · 22 + 1 · 21 + 0 · 20 = +118(10

La magnitud positiva 01110110(2 en Ca2 codifica el valor decimal +118(10.

Por lo tanto, el valor decimal del número 10001010(2 codificado en Ca2 es –118(10.

Un método para conocer la magnitud de un valor negativo codificado

en Ca2 es expresar según la base la representación en Ca2 del valor nu-

mérico (siguiendo el TFN), pero asumiendo que el bit de signo es un dí-

gito con signo negativo. Al hacer las operaciones en base 10, obtenemos

la representación en decimal del valor numérico.

Un método alternativo para conocer la magnitud de un valor negativo

codificado en Ca2 es aplicar un cambio de signo a la representación en

Ca2 del valor negativo, con lo cual se obtiene la codificación en Ca2 de

la magnitud positiva. Para conocer el valor de la magnitud en base 10,

sólo hay que hacer un cambio de base aplicando el TFN.

1 0 0 0 1 0 1 0 (2 ← valor numérico inicial

1 ← transportes

0 1 1 1 0 1 0 1 (2 ← complemento bit a bit de la expresión inicial

+ 1 ← sumamos 1 al bit menos significativo del formato

0 1 1 1 0 1 1 0 (2

© FUOC • PID_00153515 46 Representación de la información numérica

2.3.7. Suma en complemento a 2

El mecanismo de suma en Ca2 es el mismo que el mecanismo empleado en cual-

quier otro sistema posicional. Nos será de utilidad reconocer las condiciones en

las que se produce desbordamiento en Ca2 para identificar resultados erróneos

en las operaciones de suma. Recordemos que el desbordamiento se produce

cuando el resultado de una operación no cabe en el formato disponible.

Por lo tanto, cuando hacemos operaciones de suma debemos tener muy pre-

sente el formato de representación de los números y del resultado.a

Suma de dos valores positivos en Ca2

Al sumar dos números positivos, obtendremos un resultado correcto siempre

que el valor de la suma no supere el rango de representación. En este caso, ob-

tendremos un signo positivo (bit de más peso a 0) y una magnitud que corres-

ponderá a la suma de las magnitudes de los operandos.

Consideramos un formato de 6 bits para representar números enteros en Ca2

y hacemos la suma siguiente:

Sumamos dos valores positivos y obtenemos una magnitud positiva. Por lo

tanto, el resultado es correcto.

Ahora bien, si el resultado de la suma supera el rango de representación, no se

podrá representar en el formato definido. Esta situación la detectaremos por-

que la suma de dos valores positivos dará lugar a un resultado negativo (bit de

más peso a 1).

Con el mismo formato de 6 bits para representar números enteros en Ca2,

consideramos la siguiente operación:

En este caso, hemos sumado dos valores positivos y obtenemos una magnitud

negativa. El resultado no es correcto. El rango de representación de este forma-

to es [−26, +26−1 − 1] = [−32, +31], mientras que el valor de la magnitud del re-

sultado debería ser 37(10 (22(10 + 15(10 = 37(10), que queda fuera de este rango.

0 0 1 0 1 0 (2 → +10 (10

+ 0 0 0 1 0 1 (2 → + +5 (10

0 0 1 1 1 1 (2 → +15 (10

(resultado correcto)

1 1 1 1 ← transportes0 1 0 1 1 0 (2 → +22 (10

+ 0 0 1 1 1 1 (2 → + +15 (10

1 0 0 1 0 1 (2 → −27 (10

(desbordamiento)

El desbordamiento en la suma

El desbordamiento en la suma puede aparecer porque la suma de dos números enteros de n bits puede dar un resulta-do de hasta n + 1 bits.

Podéis ver la suma y la resta en los sistemas posicionales en el subapartado 1.5 de este módulo.

Podemos encontrar la correspondencia entre los números en Ca2 y los valores decimales por aplicación de cualquiera de los dos métodos expuestos en el subapartado 2.3.6.

© FUOC • PID_00153515 47 Representación de la información numérica

En esta suma se ha producido desbordamiento, porque el resultado no cabe en

el formato definido.

Suma de dos valores negativos en Ca2

De la misma manera que en el caso anterior, la suma de dos valores negativos

en Ca2 dará un resultado correcto siempre que el resultado no supere el rango

de representación del formato definido.

Consideramos de nuevo un formato de 6 bits para la representación de núme-

ros enteros en Ca2 y hacemos la operación siguiente:

Al hacer la operación, obtenemos el resultado correcto, ya que no se supera el

rango de representación que es [−26, +26−1 − 1] = [−32, +31]. Observemos que

aparece un transporte en la etapa de más peso. Este transporte no indica des-

bordamiento y se debe despreciar.

Analizamos ahora el resultado de la operación siguiente:

Como en el caso anterior, hay un transporte en la última etapa que se debe

despreciar, pero el resultado es positivo cuando hemos sumado dos valores ne-

gativos. Por lo tanto, hay desbordamiento.

Es importante recordar que el transporte que se puede producir en la última

etapa de una suma de números codificados en Ca2 no indica desbordamiento

y hay que despreciarlo.a

El desbordamiento en una suma de valores en Ca2 se puede dar cuando suma-

mos dos números positivos o dos números negativos, y lo detectaremos por-

que el resultado es de signo contrario a los operandos.a

Detectaremos el desbordamiento en la suma de dos valores positivos

codificados en Ca2 cuando el resultado sea negativo.

1 1 ← transportes

1 1 1 0 1 0 (2 → −6 (10

+ 1 1 0 1 0 1 (2 → + −11 (10

1 1 0 1 1 1 1 (2 → −17 (10

(resultado correcto)

1 1 1 1 ← transportes

1 0 0 1 1 0 (2 → −26 (10

+ 1 0 1 1 1 1 (2 → + −17 (10

1 0 1 0 1 0 1 (2 → +21 (10

(desbordamiento)

Podemos encontrar la correspondencia entre los números en Ca2 y los valores decimales si aplicamos cualquiera de los dos métodos expuestos en el subapartado 2.3.6 de este módulo.

© FUOC • PID_00153515 48 Representación de la información numérica

Suma de un valor positivo y un valor negativo en Ca2

El resultado de la suma de un valor positivo y un valor negativo en Ca2 siem-

pre será correcto, porque el resultado de la suma siempre cabrá en el formato

definido (ya que se tratará de un valor de menor magnitud que el mayor de

los dos operandos).

Con el formato de 6 bits para la representación de números enteros en Ca2,

hacemos las operaciones siguientes de suma:

El resultado es correcto en los dos casos. Observemos que en la suma de la iz-

quierda aparece un transporte a la etapa de más peso, que no indica desborda-

miento y que hay que despreciar.

2.3.8. Resta en complemento a 2

Cuando trabajamos con números codificados en Ca2, la operación de resta no

se hace directamente. El procedimiento habitual es aplicar un cambio de signo

al sustraendo (operando que queremos restar) y a continuación hacer una ope-

ración de suma. Sumamos el minuendo con el sustraendo al que hemos cam-

biado el signo.

Detectaremos el desbordamiento en la suma de dos valores negativos

codificados en Ca2 cuando el resultado es positivo. El transporte de la

última etapa no indica desbordamiento y hay que despreciarlo en todos

los casos.

1 1 ← transportes

1 1 1 0 1 0 (2 → −6 (10 1 0 0 1 1 0 (2 → −26 (10

+ 0 1 0 1 0 1 (2 → + +21 (10 + 0 1 0 0 0 1 (2 → + +17 (10

1 0 0 1 1 1 1 (2 → +15 (10 1 1 0 1 1 1 (2 → −9 (10

(resultado correcto) (resultado correcto)

La suma de un número positivo y un número negativo, si los dos están

codificados en Ca2, no puede producir desbordamiento. El transporte

que se puede producir en la última etapa no indica desbordamiento y

hay que despreciarlo en todos los casos.

La operación de resta en Ca2 se reduce a una operación de suma una vez

se ha cambiado el signo del sustraendo.

Podéis ver la correspondencia entre los números en Ca2 y los valores decimales aplicando cualquiera de los dos métodos expuestos en el subapartado 2.3.6 de este módulo.

© FUOC • PID_00153515 49 Representación de la información numérica

La resta 011010(2 − 001011(2 (26(10 − 11(10) nos servirá de ejemplo para ilustrar

el procedimiento:

1) Aplicamos un cambio de signo al sustraendo:

001011(2 → complemento bit a bit → 110100(2

Sumamos 1 al bit menos significativo:

2) Hacemos la operación de suma:

El resultado es correcto. El transporte de la última etapa hay que despreciarlo

y no se produce desbordamiento. Recordemos que la suma de un número po-

sitivo y un número negativo no puede dar lugar a desbordamiento.a

2.3.9. Multiplicación por 2k de números en complemento a 2

Como hemos visto, multiplicar o dividir por 2k números representados en

sistemas de numeración posicionales de base fija igual a 2 es equivalente a

desplazar la coma fraccionaria k posiciones a la derecha o a la izquierda, res-

pectivamente.

En la representación de números enteros en Ca2, la parte fraccionaria es nula.

Podemos interpretar que la coma está a la derecha del dígito de menos peso de

la representación y es inamovible. Ahora bien, podemos conseguir el mismo

efecto de desplazamiento de la coma si desplazamos los bits a la derecha o a la

izquierda según corresponda.

De esta manera, para multiplicar el número 000101(2 en Ca2 y 6 bits por 22,

desplazamos los bits dos posiciones a la izquierda y completamos a la derecha

con los ceros necesarios (en este caso, dos):

000101(2 · 22 = 010100(2 (en decimal, +5(10 · 2

2 = +20(10)

1 1 0 1 0 0 (2

+ 1 (2

1 1 0 1 0 1 (2

1 1 ← transportes

0 1 1 0 1 0 (2 → +26 (10

+ 1 1 0 1 0 1 (2 → + −11 (10

1 0 0 1 1 1 1 (2 → +15 (10

(resultado correcto)

Podéis ver la correspondencia entre los números en Ca2 y los valores decimales aplicando cualquiera de los dos métodos expuestos en el subapartado2.3.6 de este módulo.

Podéis ver la multiplicación y la división por potencias de la base de numeración en el subapartado 1.6 de este módulo.

Por aplicación del TFN

000101(2 = 1 · 22 + 1 · 20 = 5(10

010100(2 = 1 · 24 + 1 · 22 = 20(10

© FUOC • PID_00153515 50 Representación de la información numérica

Si aplicamos este procedimiento, obtenemos el resultado correcto. También se

obtiene el resultado correcto en el caso de números negativos:

111000(2 · 22 = 10000(2 (en decimal, −8(10 · 2

2 = −32(10 )

Este procedimiento para obtener de manera sencilla el resultado de este tipo

de operación es aplicable a todos los números representados en Ca2.

Sin embargo, esta operación produce desbordamiento cuando el resultado no

cabe en los n bits del formato en Ca2. Las operaciones siguientes provocan

desbordamiento y, consiguientemente, un resultado erróneo:

000101(2 · 24 = 010000(2 (en decimal, +5(10 · 2

4 = +16(10)

111000(2 · 24 = 00000(2 (en decimal, −8(10 · 2

4 = 0(10 )

El desbordamiento se produce cuando se pierden los dígitos significativos al

hacer el desplazamiento. Observemos que los dígitos significativos son los 1

en el caso de los positivos y los 0 en el caso de los negativos.

2.3.10. Representación en exceso a M

El exceso a M es un tipo de representación de números enteros muy utili-

zado para codificar el valor del exponente cuando se trabaja en notación

científica.

La estrategia que sigue este sistema de representación es hacer un traslado del

conjunto de números que hay que representar, de manera que el valor más ne-

gativo esté codificado por el valor cero.a

El resultado de multiplicar por 2k un número en Ca2 se consigue des-

plazando los bits k posiciones a la izquierda y añadiendo a la derecha

los 0 necesarios para completar los n bits del formato.

Se produce desbordamiento al multiplicar un número en Ca2 por 2k

cuando se pierden uno o más bits significativos al desplazar los bits k

posiciones.

En números positivos, se dará cuando se pierda algún 1 en el desplaza-

miento, mientras que en los números negativos se dará cuando se pier-

da algún 0.

Las magnitudes decimales

Las magnitudes decimales son:111000(2 = = −1 · 25 + 1 · 24 + 1 · 23 = −8(10

100000(2 = −1 · 25 = −32(10

© FUOC • PID_00153515 51 Representación de la información numérica

El resto de los valores se codifican a partir del 0 en orden ascendente. La figura

siguiente muestra gráficamente esta estrategia:

Lo que se consigue de esta manera es transformar el conjunto de valores ente-

ros representables a un conjunto de números naturales. El mecanismo que

permite esta transformación es la aplicación de un desplazamiento.

Consideremos el intervalo [−5, +5]. Para desplazar este rango de valores ente-

ros a un conjunto de valores naturales, sólo debemos sumar 5 a cada número

entero del intervalo. De esta manera, los números pasan a estar en el intervalo

[0, 10]. Con este desplazamiento, el valor entero −5 da lugar al valor natural

0, ya que −5 + 5 = 0; el valor +2 da lugar al valor natural 7, ya que 2 + 5 = 7; etc.

El desplazamiento de un intervalo de valores enteros a un intervalo de valores

naturales permite utilizar las técnicas de representación de números naturales

para codificarlos. Este tipo de estrategia se denomina representación en exce-

so a M, donde M es el desplazamiento que se aplica al intervalo de enteros que

se quiere codificar.

A modo de ejemplo, podemos decir que en una representación en exceso a 10

el número entero −4 se representa con el número natural 6, y que el 0 se re-

presenta con el número 10.

Puesto que dentro del computador la información se codifica en binario, los

números naturales utilizados en la representación en exceso a M se codifican

en binario.a

El intervalo [a, b] de números enteros se puede desplazar al intervalo

de números naturales [0, b + a] si sumamos −a a cada entero del in-

tervalo [a, b].

La representación en exceso a M de un número entero X se obtiene si

sumamos el desplazamiento M al valor numérico X. Consiguientemen-

te, encontraremos el valor de un número codificado en exceso a M si

restamos M a la codificación.

© FUOC • PID_00153515 52 Representación de la información numérica

Representación en exceso a M

Para representar el valor –6(10 en exceso a 7 y 4 bits, procederemos de la siguiente manera:

1) Sumamos el desplazamiento para encontrar la codificación en decimal –6(10 + 7(10 = 1(10.2) Codificamos en binario y 4 bits el número obtenido 1(10 = 0001(2.

El valor –6(10 se codifica en exceso a 7 y 4 bits como 0001.

Para representar el valor +3(10 en exceso a 7 y 4 bits, procederemos de la siguiente manera:

1) Sumamos el desplazamiento para encontrar la codificación en decimal 3(10 + 7(10 = 10(10.2) Codificamos en binario y 4 bits el número obtenido 10(10 = 1010(2.

El valor +3(10 se codifica en exceso a 7 y 4 bits como 1010.

Para saber qué valor representa la cadena de bits 1101 que está codificada en exceso a 7y 4 bits, procederemos de la siguiente manera:

1) Hacemos un cambio de base para encontrar la codificación en decimal 1101(2 = 13(10.2) Restamos el desplazamiento para encontrar el valor codificado 13(10 – 7(10 = +6(10.

El valor que representa la cadena de bits 1101 codificada en exceso a 7 y 4 bits es +6(10.

Para saber qué valor representa la cadena de bits 0101 que está codificada en exceso a 7y 4 bits, procederemos de la siguiente manera:

1) Hacemos un cambio de base para encontrar la codificación en decimal 0101(2 = 5(10.2) Restamos el desplazamiento para encontrar el valor codificado 5(10 – 7(10 = –2(10.

Rango de representación en exceso a M

Consideremos un formato de 2 dígitos decimales para la representación de nú-

meros enteros en exceso a 3. El menor número que podremos representar será

el número X, que hace cierta la ecuación X(10 + 3(10 = 0(10, es decir, el valor −3(10.

De una manera semejante, el mayor número que se puede representar es el que

hace que X(10 + 3(10 = 99(10, es decir, el +96(10. En exceso a 3, el valor −3(10 se co-

difica como 0(10 y el valor +96(10 como 99(10, que corresponden a los límites

del intervalo de números naturales representables con 2 dígitos decimales. Por

lo tanto, en el formato definido el rango de valores enteros que podemos re-

presentar en exceso a 3 es el [−3(10, +96(10], donde podemos ver que la magni-

tud del valor más negativo que se puede representar, (−3(10), coincide con la

magnitud del desplazamiento (3(10).

El valor que tomará M dependerá de la aplicación en la que se utilicen los enteros

codificados en el sistema de exceso. Ahora bien, es habitual que M tome el valor

2n−1, en el que n es el número de bits disponibles para la representación. De esta

manera, se dispone de un rango equilibrado. El rango de representación en exceso

a M cuando M toma el valor 2n−1 es el mismo que el rango en complemento a 2:

[−2n−1, 2n−1 − 1]

El rango de valores enteros que se puede representar en exceso a M y

n bits es:

[−M, 2n − 1 − M]

Recordemos que…

… la representación en exceso a M desplaza el número más negativo que se podrá repre-sentar en el valor 0.

Recordemos que…

… el rango de representación de números naturales con n bits es [0, 2n − 1]. El rango en exceso a –M se obtiene si su-mamos el desplazamiento M al intervalo [0 – M, 2n – 1 – M].

Otros valores habituales del exceso

También es habitual encontrar sistemas de representación en exceso a M que utilicen M = 2n−1 − 1. El sistema más conocido que lo utiliza es el estándar IEEE754.

© FUOC • PID_00153515 53 Representación de la información numérica

Este valor de M también permite diferenciar fácilmente los números negativos

de los positivos: todos los negativos empiezan por 0 y todos los positivos (in-

cluido el 0), por 1. A pesar de todo, este bit inicial no se considera un bit de

signo. Si no se dice explícitamente otra cosa, en este curso asumiremos siem-

pre que M = 2n−1.a

Para conocer la manera en la que cambia la representación en exceso a M con

la ampliación del número de bits del formato, debemos establecer cómo afecta

el cambio al valor de M. Hay dos escenarios posibles:

1) Que se mantenga el valor de M, a pesar del cambio en el número de bits del

formato de representación.

2) Que se ajuste el valor de M al formato nuevo, que es el caso más habitual.

El primer caso es el más simple. Para convertir la codificación en exceso a M

de un formato de n bits a un formato n + p bits, sólo hay que añadir p ceros

a la izquierda. Por ejemplo, en exceso a 8 y 4 bits, el −2(10 se codifica como

8(10 + (−2(10) = +6(10 = 0110(2. Si se mantiene el valor de M, la extensión de

esta codificación a un formato de 8 bits se consigue con la adición de 0 a la

izquierda, con lo cual se obtiene 00000110(2.

El segundo caso es el más habitual y comporta cambios importantes en la codi-

ficación. En la tabla siguiente, se muestra cómo cambian las codificaciones de

números en exceso a 4 y 3 bits con la ampliación del formato y el cambio de M

según el número de bits. Se asume que M toma el valor 2n−1, en el que n se ajusta

al número de bits, y se marcan en negrita los bits que diferencian la nueva co-

dificación de la inicial en exceso a 4:

La extensión a n + p bits de la codificación en exceso a M de n bits

manteniendo fijo el valor de M se consigue con la adición de p ceros

a la izquierda de la codificación. Este procedimiento es válido indepen-

dientemente del valor de M.

Decimal Binario Exceso a 4 con 3 bits

Exceso a 8 con 4 bits

Exceso a 16 con 5 bits

Exceso a 32 con 6 bits

−4 −100 000 0100 01100 011100

−3 −011 001 0101 01101 011101

−2 −010 010 0110 01110 011110

−1 −001 011 0111 01111 011111

0 000 100 1000 10000 100000

+1 +001 101 1001 10001 100001

+2 +010 110 1010 10010 100010

+3 +011 111 1011 10011 100011

© FUOC • PID_00153515 54 Representación de la información numérica

A partir de esta tabla, podemos extrapolar una conclusión.

La representación en exceso a M se utiliza para codificar de manera exacta los

números enteros contenidos en el intervalo que determina el rango de repre-

sentación. Por lo tanto, la precisión es 1.a

Suma y resta en exceso a M

La suma y la resta en exceso a M presenta un problema: la codificación en exceso

a M de todo valor numérico comporta un desplazamiento de magnitud M.

Tomamos, por ejemplo, los números 10(10 y 14(10. La suma de estos números

es 10(10 + 14(10 = 24(10. La codificación decimal en exceso a 16 del número 24(10

se obtiene si sumamos el desplazamiento: 24(10 + 16(10 = 40(10.

Ahora bien, cuando trabajamos con números codificados en exceso a M nos se-

ría útil conseguir el resultado correcto de la suma a partir de las codificaciones.

Tomamos ahora las codificaciones decimales en exceso a 16 de los mismos

números, que son, respectivamente, 26(10 para el 10(10 (que se obtiene de

10(10 + 16(10 = 26(10) y 30(10 para el 14(10 (que se obtiene de 14(10 + 16(10 = 30(10).

La suma de las codificaciones es:

26(10 + 30(10 = (10(10 + 16(10) + (14(10 + 16(10) =

= 10(10 + 14(10 + 16(10 + 16(10 = 10(10 + 14(10 + (2 × 16(10) = 56(10.

Los resultados obtenidos son distintos: 40(10 en el primer caso y 56(10 en el se-

gundo. Vemos que cuando sumamos las codificaciones sumamos dos veces el

desplazamiento, que en este caso es 16. Por lo tanto, para obtener la codificación

correcta del resultado tenemos que restar el desplazamiento: 56(10 − 16(10 = 40(10.

Es decir, al sumar las codificaciones sumamos el exceso dos veces. Las codi-

ficaciones en exceso a M de dos valores X e Y son, respectivamente, X + M e

La extensión a n + p bits de la codificación en exceso a M de n bits,

en la que M toma el valor M = 2n+p−1, se consigue añadiendo p unos

puntos a la derecha del dígito de más peso para el caso de los números

negativos y añadiendo p ceros a la derecha del dígito de más peso para

el caso de los números positivos, incluido el 0. Este procedimiento es

válido para M = 2n+p−1, donde n + p es el número de bits.

La precisión de una representación en exceso a M de números enteros

es 1.

© FUOC • PID_00153515 55 Representación de la información numérica

Y + M. Al hacer la suma de las codificaciones, sumamos dos veces el despla-

zamiento:

(X + M) + (Y + M) = X + Y + 2 · M

El resultado que obtenemos es X + Y + 2 · M, cuando en realidad el resultado

debería ser X + Y + M. Obtendremos la codificación correcta si restamos M al

resultado de la suma.

Suma de números codificados en exceso a M

Para sumar los números binarios 00001100(2 y 11001111(2 codificados en exceso a 27

(27(10 = 10000000(2) y 8 bits, haremos las operaciones:

En el caso de la resta, encontramos una dificultad semejante. La codificación

en exceso a M de los valores numéricos X e Y son, respectivamente, X + M e

Y + M. El resto de estas codificaciones hace que desaparezca el desplazamiento:

(X + M) − (Y + M) = X + M − Y − M = X − Y + M − M = X − Y

La codificación correcta del resultado es X − Y + M. Conseguiremos esta codi-

ficación si sumamos M al resultado de la resta.

Resta de números codificados en exceso a M

Para restar los números binarios 00001100(2 y 10000100(2, codificados en exceso a 27

(27(10 = 10000000(2) y 8 bits, haremos las operaciones:

El resultado correcto en la suma de dos valores numéricos codificados

en exceso a M se obtiene si restamos el desplazamiento M al resultado.

1 1 ← transportes

0 0 0 0 1 1 0 0 (2+ 1 1 0 0 1 1 1 1 (2

1 1 0 1 1 0 1 1 (2

1 1 0 1 1 0 1 1 (2

− 1 0 0 0 0 0 0 0 (2

0 1 0 1 0 0 1 1 (2

El resultado correcto en la resta de dos valores numéricos codificados en

exceso a M se obtiene si sumamos el desplazamiento M al resultado.

0 0 0 0 1 1 0 0 (2

1 ← transportes− 1 0 0 0 0 1 0 0 (2

1 0 0 0 1 0 0 0 (2

1 ← transportes1 0 0 0 1 0 0 0 (2

+ 1 0 0 0 0 0 0 0 (2

0 0 0 0 1 0 0 0 (2

© FUOC • PID_00153515 56 Representación de la información numérica

El desbordamiento en las operaciones de suma y resta de valores codificados

en exceso a M, donde M es 2n−1 y n el número de bits, se detecta al hacer la

corrección del resultado. Cuando la suma o la resta del desplazamiento M que

hacemos para corregir el resultado genera un transporte en la última etapa,

hay desbordamiento.

Consideremos una representación en exceso a 2 y 2 bits. La codificación del

valor 1(10 en este sistema es 1(10 + 2(10 = 3(10 = 11(2. Si sumamos este valor co-

dificado consigo mismo, obtenemos:

Hay desbordamiento, porque en la última etapa del resto del desplazamiento

realizada para corregir el resultado se produce un transporte.

En la operación de resta, la manera de detectar el desbordamiento es idén-

tica. Si consideramos la representación en exceso a 4 y 3 bits, la codifica-

ción del valor 2(10 en este sistema es 2(10 + 4(10 = 6(10 = 110(2 y la del valor

−2(10 es −2(10 + 4(10 = 2(10 = 010(2. De la operación de resta de estos valores

obtenemos:

También ahora detectamos que hay desbordamiento, porque en la última eta-

pa de la suma del desplazamiento realizada para corregir el resultado se pro-

duce un transporte.

1 ← transporte

1 1 (2

+ 1 1 (2

1 1 0 (2

1 ← transporte

1 1 0

− 1 0 (2

1 0 0

1 1 0 (2

− 0 1 0 (2

1 0 0 (2

1 ← transporte

1 0 0 (2

+ 1 0 0 (2

1 0 0 0 (2

Detectaremos el desbordamiento en las operaciones de suma y resta

de valores binarios codificados en exceso a M, cuando M es 2n−1, donde

n es el número de bits, porque la operación de corrección del resultado

genera un transporte en la última etapa.

© FUOC • PID_00153515 57 Representación de la información numérica

Actividades

23. Convertid los valores decimales siguientes a binarios en los sistemas de representa-ción de signo y magnitud y complemento a 2, con un formato entero de 8 bits:a) 53b) −25c) 93d) −1e) −127f) −64

24. Si tenemos los números binarios 00110110, 11011010, 01110110, 11111111 i 11100100,¿cuáles son los equivalentes decimales, sin consideramos que son valores binarios represen-tados en signo y magnitud? ¿Y si los consideramos valores en complemento a 2?

25. Tenemos las cadenas de bits siguientes: A = 1100100111, B = 1000011101 y C =0101011011. Haced las operaciones que proponemos a continuación, si consideramos queson números binarios en formato de signo y magnitud: A + B, A − B, A + C, A − C, B − C, B + C.

26. Repetid la actividad 25, considerando que las cadenas representan números en com-plemento a 2.

27. Tenemos la cadena de bits 10110101. Haced las siguientes conversiones:a) Tened en cuenta que representa un número en Ca2 y representad el mismo númeroen signo y magnitud y 16 bits.b) Tened en cuenta que representa un número en signo y magnitud y representad el mis-mo número en Ca2 y 16 bits.

28. Determinad qué desplazamiento deberíamos utilizar para poder representar el inter-valo [−25,50] con una representación en exceso.

29. Haced las siguientes codificaciones: a) Los números 3(10 y −8(10 en exceso a 7 y decimal.b) Los números −4(10 en 6 bits y exceso a 7.c) Los números 3(10 y −6(10 en una representación en exceso a 4 de 8 bits.

30. ¿Cuál es el valor decimal de los números 000000(2, 100000(2 i 111111(2 que están co-dificados en exceso a 31(10?

31. Determinad el signo de los números 0111000(2, 1001110(2 y 000000(2 codificados enuna representación de 7 bits en exceso a 26.

32. Sumad los números 000100 y 100100 codificados en binario y exceso a 25.

33. Restad los números 000100 y 100100 codificados en binario y exceso a 25.

34. Suponed una representación de 5 bits en exceso a 10000(2 y calculad las siguientes sumas:a) 11000 + 00000 =b) 00000 + 00000 =c) 01000 + 11111 =

2.4. Números fraccionarios

Como sabemos, en muchas ocasiones es necesario representar números que son

menores que la unidad, como por ejemplo 0,03(10, o que tienen partes menores

que la unidad, como por ejemplo 1,23(10. Estos números reciben el nombre de nú-

meros fraccionarios y se representan con una notación posicional:

1,23(10 = 1 · 100 + 2 · 10−1 + 3 · 10−2

Si seguimos el método de cambio de base basado en el TFN, podremos conocer

la magnitud decimal de un número fraccionario expresado en base 2. La mag-

nitud decimal del 111,01101(2 es la siguiente:

1 · 22 + 1 · 21 + 1 · 20 + 0 · 2−1 + 1 · 2−2 + 1 · 2−3 + 0 · 2−4 + 1 · 2−5 = 7,40625(10

Podéis ver los sistemas de numeración posicionales en el subapartado 1.2 de este módulo.

Podéis ver el método basado en el TNF en el subapartado 1.3.1 de este módulo.

© FUOC • PID_00153515 58 Representación de la información numérica

La representación de los números fraccionarios dentro de los computadores se

suele hacer destinando un número fijo de bits, del total de bits del formato, a

la representación de la parte fraccionaria. Este tipo de representación recibe el

nombre genérico de representación de coma fija.a

Representación binaria en coma fija

Las representaciones de coma fija no almacenan la posición de la coma de

manera explícita. En la definición del formato se especifica la posición de la

coma, y se asume que siempre es la misma.

Signo y magnitud en coma fija

Las magnitudes fraccionarias también pueden llevar asociado un signo. Para

incorporar esta información a la representación de números fraccionarios, lo

más habitual es trabajar con una representación de signo y magnitud, en la

cual la magnitud sea fraccionaria, como se indica en el subapartado 2.3.1.

En un formato de representación de coma fija de n bits (n = p + m), don-

de m bits son fraccionarios, los números representados son de la forma:

La magnitud decimal del número fraccionario representado es

, donde xi es el bit de la posición i-ésima.

En un formato de coma fija de n bits (n = p + m), donde m bits son frac-

cionarios, y en signo y magnitud, los números son de la forma:

donde xp−1 es el bit de signo y el resto de los bits codifican la magnitud.

= −

= ∑(101

· 2m

ii

i p

X x

Otras maneras de representar números

Hay otras maneras de repre-sentar números fraccionarios con signo. Por ejemplo, se po-dría utilizar la representación de complemento a la base (Ca2 en binario), pero no es habitual.

Formato en coma fija

Esta manera de representar los números fraccionarios es una extensión directa de la repre-sentación en signo y magnitud de números enteros. Por lo tanto, presenta las mismas ventajas e inconvenientes. De esta manera, por ejemplo, el 0 tiene dos representacio-nes, una con signo negativo y otra con signo positivo.

© FUOC • PID_00153515 59 Representación de la información numérica

En este tipo de representación, la descodificación u obtención del número re-

presentado es relativamente sencilla, ya que sólo hay que aplicar la fórmula

definida en el TFN. Se debe saber, sin embargo, dónde está situada la coma (es

decir, hay que saber con cuántos bits fraccionarios trabajamos).

De este modo, para conocer en decimal el valor numérico representado por la

codificación 010111101 que está en magnitud y signo en un formato de 9 bits

(n = 9), de los cuales 4 son fraccionarios (m = 4), debemos seguir el procedi-

miento indicado en la siguiente figura:

Por lo tanto, el número codificado es +1011,1101(2 = +11,8125(10.

Magnitud decimal de un número codificado en coma fija y signo y magnitud

Para encontrar la magnitud decimal que representa la codificación 10010010 que está enun formato de 8 bits, 4 de los cuales son fraccionarios, y en signo y magnitud, haremoslas operaciones siguientes:

1) Separamos el bit de signo que es 1 (bit del extremo izquierdo) y que indica signo ne-gativo. El resto de los bits 0010010 codifica la magnitud.

2) El valor decimal de la magnitud lo podemos conocer si aplicamos el TFN:

0 · 22 + 0 · 21 + 1 · 20 + 0 · 2−1 + 0 · 2−2 + 1 · 2−3 + 0 · 2−4 = 1 + 0,125 = 1,125(10

Por lo tanto, el número representado en decimal es –1,125(10.

Codificación de un valor decimal en coma fija y signo y magnitud

Para codificar el número –14,75(10, en un formato de coma fija de 8 bits en el que 3 sonfraccionarios y signo y magnitud, haremos las operaciones siguientes:

1) Cambiar a base 2 el número 14,75(10 a partir del método basado en el teorema de ladivisión entera.

a) Codificar en binario la parte entera (14(10) en 4 bits (ya que de los 8 bits, 3 son fraccio-narios y 1 codifica el signo; quedan 4 para la parte entera), aplicando el algoritmo de di-visiones sucesivas:

14 = 7 × 2 + 07 = 3 × 2 + 13 = 1 × 2 + 11 = 0 × 2 + 1

De manera que obtenemos: 14(10 = 1110(2.

b) Codificar en binario la parte fraccionaria en 3 bits:

0,75 · 2 = 1,50 = 1 + 0,50,5 · 2 = 1,0 = 1 + 0,0

De manera que obtenemos: 0,75(10 = 0,110(2.

Podéis ver el método basado en el teorema de la división entera en el subapartado 1.3.2 de este módulo.

© FUOC • PID_00153515 60 Representación de la información numérica

c) Juntar las partes enteras y fraccionarias, con lo cual obtenemos que la representaciónde la magnitud 14,75(10 con 7 bits, 3 de los cuales son fraccionarios, es:

14,75(10 = 1110,110(2

2) Añadir el bit de signo a la magnitud. El bit de signo es 1, ya que el signo es negativo.La representación en un formato de coma fija de 8 bits, donde 3 son fraccionarios, y sig-no y magnitud –14,75(10, es la siguiente:

–14,75(10 = 1110,110(2

Recordemos que la coma no se almacena, sino que una vez especificado el formato se co-noce su posición. En realidad, un computador almacenaría el código 11110110 sin comani especificación de base, que están fijados en la definición del formato.

Cuando la representación en binario de la parte fraccionaria de un número ex-

cede el número de bits fraccionarios disponibles en el formato en signo y mag-

nitud definido, el número no se podrá representar de una manera exacta. Será

necesario aplicar, por lo tanto, uno de los métodos de aproximación explica-

dos: el truncamiento o el redondeo.a

Cambio de base 10 a base 2 del número 8,9453125(10

1. Parte entera

8 = 4 · 2 + 04 = 2 · 2 + 02 = 1 · 2 + 01 = 0 · 2 + 1

2. Parte fraccionaria

8,9453125(10 = 1000,1111001(2

A modo de ejemplo, intentemos representar el número +8,9453125(10 en un for-

mato de coma fija y signo y magnitud, con 8 bits de los cuales 3 son fraccionarios.

Si hacemos el cambio de base, encontramos que 8,9453125(10 = 1000,1111001(2.

Deberemos utilizar uno de los métodos de aproximación, ya que la parte frac-

cionaria no cabe en los 3 bits disponibles en el formato:

a) Por truncamiento. Se trata, sencillamente, de despreciar los bits que no

tienen cabida. El 1000,1111001(2 se aproximará por el 1000,111(2. Añadimos

el bit de signo y la codificación final será 01000111. El error de representación

que se comete en este caso es:

|1000,1111001(2 − 1000,111(2| = 0,0001001(2 = 0,0703125(10

b) Por redondeo. Se suma la mitad de la precisión:

1000,1111001(2 + 0,0001(2 = 1001,0000001(2

0,9453125 · 2 0,890625 · 2 0,781250 · 2

0,5625 · 2 0,125 · 2 0,245 · 2

0,5 · 2

=======

0,890625 0,781250 0,5625 0,125 0,245 0,5 0

+ 1+ 1+ 1+ 0+ 0+ 0+ 1

Podéis ver las aproximacionespor truncamiento y redondeo en el subapartado 2.1.4 de este módulo.

La precisión

La precisión es la distancia entre dos números representa-bles consecutivos (ved el subapartado 2.1.2) . Fácilmente, se comprueba que la precisión con 3 bits fraccionarios es 0,001(2 (distancia entre el 0,000 y el 0,001). Para conseguir la mitad de este valor, la coma se desplaza una posición hacia la izquierda (que equivale a dividir por 2 en base 2), es decir: 0,0001(2.

© FUOC • PID_00153515 61 Representación de la información numérica

A continuación truncamos a 3 bits fraccionarios, de manera que el

1000,1111001(2 se aproximará por el 1001,000(2. Añadimos el bit de signo y la

codificación final será 01001000. En este caso, el error de representación que

se comete es menor:

|1000,1111001(2 − 1000,000(2| = 0,0000111(2 = 0,0546875(10

Rango y precisión en coma fija

La mayor magnitud binaria que podemos representar en un formato de coma

fija es la que se obtiene si ponemos todos los bits que representan la magnitud

a 1. Si el bit de signo lo ponemos a cero, tendremos la representación de la ma-

yor magnitud positiva que se puede representar. Si el bit de signo es 1, se tra-

tará de la mayor magnitud negativa que se puede representar. Estos números,

el mayor y el menor, delimitan el intervalo que contiene los números que se

pueden representar, es decir, el rango.

El mayor número representable en signo y magnitud y un formato de coma

fija de 9 bits con 3 fraccionarios es el 011111,111(2 = +31,875(10; el menor es

el 111111,111(2 = −31,875(10. Por lo tanto, el rango en decimal de este formato es:

[−31,875(10 + 31,875(10]

En general, el mayor número que se puede representar con n bits, m de los cua-

les fraccionarios, se puede calcular si suponemos que todos los bits valen 1 y

aplicamos el TFN:

1 · 2n−m−2 + 1 · 2n−m−3 + … + 1 · 20 + 1 · 2−1 + … + 1 · 2−m = 2n−m−1 − 2−m

donde hemos aplicado la siguiente propiedad:

Ampliación de la parte fraccionaria

Para ampliar en 3 bits la parte fraccionaria y en 2 bits la parte entera del número 111,001(2que está en coma fija y signo y magnitud, añadiremos 3 ceros a la derecha de la magnitud y

El rango de una representación en signo y magnitud y un formato en

coma fija de n bits, donde m son fraccionarios, es el siguiente:

[−2n−m−1 + 2−m, 2n−m−1 − 2−m].

De la misma manera, el rango de una representación de números frac-

cionarios sin signo en un formato de coma fija de n bits, donde m son

fraccionarios, es el siguiente:

[0, + 2n−m − 2−m].

111...k 11 2( 2k 1– 2k 2– ...21 20 2k 20–2 1–----------------- 2k 1–

1--------------- 2k 1–===+ + +=

© FUOC • PID_00153515 62 Representación de la información numérica

2 ceros la izquierda de la magnitud. La nueva codificación en el caso de signo y magnitud es10011,001000(2, en la que se marcan en negro los dígitos añadidos. Esta ampliación, si el nú-mero 111,001(2 fuese una magnitud sin signo, daría lugar a la codificación 00111,001000(2.

La ampliación de un formato en coma fija debe tener en cuenta los posibles

cambios en la posición de la coma. De hecho, sólo es necesario conocer cuán-

tos bits se destinan a la parte fraccionaria y cuántos a la parte entera. Una am-

pliación de k bits de la parte fraccionaria comporta añadir k ceros a la derecha

de la magnitud. Una ampliación de p bits de la parte entera se consigue si aña-

dimos p ceros a la izquierda de la magnitud. Si trabajamos en signo y magni-

tud, deberemos separar el signo de la magnitud para hacer los cambios y

después añadirlo al extremo izquierdo.

La precisión es la menor distancia entre dos números representables consecu-

tivos. Si trabajamos con una representación en coma fija de 3 bits donde 1 es

fraccionario y signo y magnitud los números que se pueden representar son:

−1,1(2, −1,0(2, −0,1(2, 0,0(2, +0,1(2, +1,0(2 y +1,1(2. Como podemos observar, to-

dos están separados una distancia 0,1(2. Por este motivo, la precisión es 0,1(2.

En las representaciones de coma fija, la precisión es determinada por el bit me-

nos significativo de la representación. a

Suma y resta en coma fija

Las operaciones de suma y de resta en coma fija se hacen a partir del algoritmo ha-

bitual descrito en el apartado 1.5, como podemos ver en los siguientes ejemplos:

La extensión o ampliación de k bits por la parte fraccionaria y p bits

por la parte entera de un formato de coma fija, tanto en signo y mag-

nitud como sin signo, se consigue si añadimos k ceros a la derecha de la

magnitud y p ceros a la izquierda de la magnitud.

La precisión de una representación en coma fija de n bits, donde m son

fraccionarios, es 2−m.

1 , 1 0 1 (2

0 0 0 ← transportes

− 0 , 1 0 0 (2

1 , 0 0 1 (2 ← resultado

1 1 0 0 ← transportes

1 , 1 0 1 (2

+ 0 , 1 0 0 (2

1 0 , 0 0 1 (2 ← resultado

© FUOC • PID_00153515 63 Representación de la información numérica

Observemos que un número fraccionario como por ejemplo el 1,101(2 se pue-

de escribir 1101(2 · 2−3. Con este procedimiento, podemos asociar un número

entero, en este caso el 1101(2, a un número fraccionario.

Si aplicamos esta transformación a los números 1,101(2 y 0,100(2 de la suma

anterior, obtenemos:

1,101(2 = 1101(2 · 2−3 i 0,100(2 = 0100(2 · 2

−3.

La suma se puede hacer de esta manera:

1101(2 · 2−3 + 0100(2 · 2

−3 = (1101(2 + 0100(2) · 2−3 = 10001(10 · 2

−3

Observemos que por este procedimiento hemos transformado una suma de

números fraccionarios en una suma de números enteros.a

Observemos también que en la representación no aparece la ubicación de la

coma. Sin embargo, puesto que todos los números con los que trabajaremos

tendrá la coma en la misma posición, no hay que saber su situación para ope-

rar con los mismos.

Es decir, las operaciones para sumar los números 11,01(2 y 00,01(2 o los núme-

ros 1,101(2 y 0,001(2 son idénticas. La primera se puede escribir como:

11,01(2 + 00,01(2 = 1101(2 · 2−2 + 0001(2 · 2

−2 = (1101(2 + 0001(2) · 2−2

y la segunda como:

1,101(2 + 0,001(2 = 1101(2 · 2−3 + 0001(2 · 2

−3 = (1101(2 + 0001(2) · 2−3

En los dos casos, la operación realizada finalmente es la suma de los dos números

enteros 1101(2 y 0001(2. A continuación sumamos estos números 11,111(2 y

01,111(2, que están en un formato de coma fija de 6 bits, con 3 fraccionarios:

Con la transformación anterior, las operaciones entre números fracciona-

rios se pueden llevar a cabo mediante operaciones entre números enteros.

1 1 1 1 1 ← transportes

1 1 1 1 1 (2

+ 0 1 1 1 1 (2

1 0 1 1 1 0 (2 ← resultado

© FUOC • PID_00153515 64 Representación de la información numérica

Para representar el resultado, necesitamos un dígito más de los que tenemos

disponibles en el formato definido. Por este motivo, el resultado no es repre-

sentable en el formato especificado. Se ha producido desbordamiento, que po-

demos reconocer de la misma manera que en la suma de números naturales.

Multiplicación y división por 2k en coma fija binaria

Ya hemos analizado la multiplicación y la división por potencias de la base de

numeración de manera genérica. Las operaciones de multiplicación y división

por 2k en coma fija binaria corresponden al caso particular en el que la base de

numeración es 2.

Cuando la base de numeración es 2 en un sistema posicional de base fija, los

pesos asociados a los dígitos son potencias de 2. Consiguientemente, multipli-

car por 2 se traduce en aumentar en una unidad la potencia de 2 asociada a

cada bit y dividir por 2 es equivalente a disminuir en una unidad la potencia

de 2 asociada a cada bit.

Por ejemplo, el número 0011,01(2 se puede expresar en términos de los pesos

asociados a cada bit si seguimos el TFN:

0011,01(2 = 0 · 23 + 0 · 22 + 1 · 21 + 1 · 20 + 0 · 2−1 + 1 · 2−2

Si multiplicamos por 2, se obtiene:

0011,01(2 · 2 = (0 · 23 + 0 · 22 + 1 · 21 + 1 · 20 + 0 · 2−1 + 1 · 2−2) · 2 =

= 0 · 24 + 0 · 23 + 1 · 22 + 1 · 21 + 0 · 20 + 1 · 2−1 = 00110,1(2

La multiplicación o la división de un número binario por una potencia de 2

provoca el desplazamiento de la coma fraccionaria.a

En un formato de coma fija, el número de bits que se destinan a la parte entera

y a la parte fraccionaria se mantienen constantes. Por lo tanto, para hacer mul-

tiplicaciones o divisiones por la base no es factible desplazar la coma fraccio-

El desbordamiento en la suma de números sin signo en coma fija se

puede detectar de la misma manera que en el caso de la suma de números

naturales. Recordemos que la resta no puede dar lugar a desbordamiento.

El desbordamiento en la suma y la resta de números en coma fija

y signo y magnitud se puede detectar de la misma manera que en el

caso de la suma y la resta de números enteros representados en signo

y magnitud.

La resta de los números sin signo

La resta de los números sin sig-no no puede dar lugar a des-bordamiento, porque tenemos que restar la magnitud peque-ña de la grande. Restar la mag-nitud grande de la magnitud pequeña no es una operación válida para números sin signo, porque el resultado debería ser un número con signo.

Podéis ver la multiplicación y la división por potencias de la base de numeración del subapartado 1.6 de este módulo.

© FUOC • PID_00153515 65 Representación de la información numérica

naria. Conseguiremos el mismo efecto si desplazamos los bits y completamos

con ceros.

De este modo, el número 0011,01(2 representado en un formato de coma fija

de 6 bits donde 2 son fraccionarios se puede multiplicar por 22 si desplazamos

los bits dos posiciones a la izquierda y completamos con los ceros necesarios:

0011,01(2 · 22 = 1101,00(2

Esta operación puede comportar que el resultado del desplazamiento sea

un número que no cabe en el formato de coma fija especificado, de manera

que provoque desbordamiento. En los formatos de coma fija sin signo, de-

tectaremos esta situación porque al hacer los desplazamientos a la izquier-

da perderemos bits significativos (diferentes de cero, en el caso de coma fija

sin signo).

El resultado de la operación de división por 2k de un número en coma fija sin

signo también se puede conseguir con desplazamientos de los bits. Para dividir

el número 010100(2 en coma fija sin signo y 6 bits, dos de los cuales son frac-

cionarios, por 22 desplazamos los bits dos posiciones a la derecha:

Por aplicación del TFN

0101,00(2 = 1 · 22 + 1 · 20 = 5(100001,01(2 = 1 · 20 + 1 · 2−2 = 1,25(100101,00(2 / 2

2 = 0001,01(2 (en decimal, +5(10 / 22 = +1,25(10)

Multiplicar por 2k un número en coma fija sin signo equivocado equi-

vale a desplazar los bits k posiciones a la izquierda, y completar los n bits

del formato con la adición a la derecha de los ceros necesarios.

Dividir por 2k un número en coma fija sin signo equivale a desplazar

los bits k posiciones a la derecha, y completar los n bits del formato con

la adición a la izquierda de los ceros necesarios.

Se produce desbordamiento al multiplicar un número sin signo en

coma fija por 2k cuando se pierden uno o más bits significativos (dife-

rentes de cero) al desplazar los bits k posiciones.

El resultado de la división por 2k de un número en coma fija sin signo

se obtiene si desplazamos los bits k posiciones a la derecha y añadimos

a la izquierda los ceros necesarios para completar los n bits del formato.

© FUOC • PID_00153515 66 Representación de la información numérica

En el caso de la división por 2k no se puede producir desbordamiento, pero po-

demos perder bits significativos que hagan que el resultado no sea exacto,

como en el siguiente ejemplo:

0101,00(2 / 24 ≈ 0000,01(2 (en decimal, +5(10 / 2

4 ≈ + 0,25(10)

Cuando se pierden bits significativos (diferentes de cero) al desplazar los bits

a la derecha, el resultado de la operación de división por 2k no es exacto. La

pérdida de bits significativos por la derecha equivale a hacer una aproxima-

ción por truncamiento.a

En el caso de los formatos de coma fija en signo y magnitud, las operaciones

de multiplicación y división por 2k tienen las mismas características que las

descritas más arriba para los formatos de coma fija sin signo, si dejamos de

lado el bit de signo. Es decir, una vez separado el bit de signo, nos encontra-

mos en el mismo caso que en un formato de coma fija sin signo. El bit de signo

se añadirá al final de la operación.a

Actividades

35. Determinad qué valor decimal codifica la cadena de bits 1010010 en los supuestossiguientes:a) si se trata de un número en coma fija sin signo de 7 bits, donde 4 son fraccionarios.

b) si se trata de un número en coma fija sin signo de 7 bits, donde 1 es fraccionario.

36. Codificad los números +12,85(10, +0,7578125(10 y −11,025(10 en una representaciónfraccionaria binaria en signo y magnitud de 8 bits, donde 3 son fraccionarios. Si es nece-sario, utilizad una aproximación por redondeo.

37. Si tenemos una representación en signo y magnitud de 8 bits, donde 3 bits son frac-cionarios, determinad los números codificados por las cadenas de bits 01001111,11001111, 01010100, 00000000 y 10000000.

38. Si las cadenas de bits 00101010, 11010010 y 10100010 representan números en comafija sin signo de 8 bits donde 3 son fraccionarios, representadlos en formato de coma fijasin signo de 12 bits en los que 4 son fraccionarios.

39. Repetid la actividad 38, pero considerando que se trata de números en signo y mag-nitud.

40. Determinad el rango de representación y la precisión en los siguientes formatos:a) Coma fija en signo y magnitud con 8 bits donde 3 son fraccionarios.b) Coma fija en signo y magnitud con 8 bits donde 4 son fraccionarios.c) Coma fija sin signo con 8 bits donde 3 son fraccionarios.d) Coma fija sin signo con 8 bits donde 4 son fraccionarios.

41. Determinad la precisión necesaria para poder representar el número +0,1875(10 deuna manera exacta (sin error de representación) con un formato de coma fija en base 2.

42. Determinad las características de rango y precisión, y también el número de dígitosenteros y fraccionarios necesarios en un formato de coma fija en signo y magnitud, parapoder representar de una manera exacta los números +31,875(10 y −16,21875(10.

43. Haced la suma y la resta de los pares de siguientes números, suponiendo que estánrespresentados en signo y magnitud con 8 bits donde 3 son fraccionarios:a) 00111000(2 y 10100000(2 b) 10111010(2 y 11101100(2 Verificad si el resultado es correcto

© FUOC • PID_00153515 67 Representación de la información numérica

2.5. Representación en coma flotante

El uso de la representación de números en notación científica está justificado

cuando debemos trabajar con números muy grandes o con números muy pe-

queños, y quizá de manera simultánea. La gran ventaja que ofrece es la posi-

bilidad de representar números que, de otro modo, requerirían un número

elevado de dígitos para codificarlos.

La representación en notación científica también recibe el nombre de represen-

tación en coma flotante, en oposición al término coma fija, y de esta manera nos

referiremos a este tipo de representación de ahora en adelante.a

A diferencia de la coma fija, donde la posición de la coma fraccionaria está fi-

jada en el formato y siempre es la misma, en coma flotante la posición de la

coma se determina a partir del valor que toma el exponente. El número

+32,74(10 · 102 es equivalente al +327410, mientras que +32,74(10 · 10−1 es equi-

valente a +3,274(10. El valor del exponente indica la posición relativa de la

coma fraccionaria.

Dentro de los computadores, los números representados en coma flotante to-

man la base 2 como base de numeración. Es el caso de −11,101(2 · 2101(2,

0,011(2 · 211(2 y −1110,001(2 · 2101(2. Observemos que tanto la mantisa como el

exponente están codificados en binario.

Para simplificar la notación, escribiremos los exponentes en base 10 aunque

se trate de una representación binaria. Es decir, no escribiremos +1,011(2 · 211(2,

sino +1,011(2 · 23.a

En el trabajo manual, adaptamos dinámicamente el número de dígitos utili-

zados en la mantisa y el exponente de la representación en coma flotante.

Podemos utilizar +2,995 · 108 o +0,02995 · 1010, según convenga a nuestras

necesidades.

Para agilizar los cálculos dentro de los computadores, debemos ceder esta flexibi-

lidad y adoptar restricciones que permitirán simplificar el procesamiento de este

Los números en coma flotante toman la forma:

±R · be

Donde ‘+’ o ‘−’ indica el signo de la magnitud representada, R es un nú-

mero fraccionario que recibe el nombre de mantisa, b es la base de nu-

meración y e es un número entero que recibe el nombre de exponente.

Podéis ver la representación de números en notación científica en el subapartado 1.7 de este módulo.

Terminología

Se pueden utilizar los términos notación científica o coma flotante indistintamente para designar este tipo de represen-tación. En los apartados si-guientes, sin embargo, se utilizará la denominación coma flotante.

© FUOC • PID_00153515 68 Representación de la información numérica

tipo de datos. Asumiremos que la base de numeración es 2 y que el número de

bits destinados a la mantisa y al exponente se fija en la especificación del formato.

La representación de un valor numérico en coma flotante no es única. Un

mismo número se puede escribir de distintas maneras. Algunas representa-

ciones del número 26300(10 en coma flotante son: 2,63(10 · 104, 0,263(10 ·

105, 263(10 · 102, 2630(10 · 101, 26300(10 · 100 o 263000(10 · 10−1.

De nuevo, podemos conseguir mejoras en el procesamiento de los números en

coma flotante dentro de los computadores si restringimos esta flexibilidad. Eli-

minaremos la multiplicidad de representaciones si fijamos la posición de la

coma fraccionaria de la mantisa respecto del primer dígito no nulo.

Por ejemplo, el formato puede determinar que la coma está a la derecha del

primer dígito no nulo. Con esta limitación, el número 26300(10 tiene una re-

presentación única, que es 2,63 · 104.

Las posiciones más habituales a las que se fija la coma de la mantisa son la de-

recha del primer dígito no nulo y la izquierda del primer dígito no nulo. En

este curso, utilizaremos la primera alternativa: asumiremos que la coma de la

mantisa está a la derecha del primer dígito no nulo, excepto que se indique

explícitamente otro tipo de normalización.a

Para la representación en coma flotante dentro de los computadores,

asumiremos que la base de numeración es 2 y que en la definición

del formato se fijará el número de bits de la mantisa y el número de

bits del exponente.

Para evitar la multiplicidad de representaciones de un mismo valor nu-

mérico propia de la representación en coma flotante, en la definición

del formato que hay que utilizar se fija la posición de la coma fraccio-

naria respecto del primer dígito no nulo.

Cuando la mantisa tiene fijada la posición de la coma fraccionaria, re-

cibe el calificativo de mantisa normalizada.

Los valores numéricos representados en coma flotante con mantisa nor-

malizada y coma a la derecha del primer bit no nulo son de la forma:

±1, x−1x−2 · · · · · x−k · be

donde xi son dígitos binarios (bits), b es la base de numeración y e es el

exponente.

Nota

Aunque la base de numeración dentro de los computadores es 2, a lo largo del texto utilizare-mos base 10 en algunos casos para ejemplificar los conceptos que presenten.

La representación de un valor numérico en coma flotante

no es única.

Un tipo de operación que se simplifica si fijamos la posición

de la coma de la mantisa es la comparación de valores numéricos.

Coma flotante con mantisa normalizada

En las representaciones en coma flotante con la coma de la mantisa fijada a la izquierda del primer dígito no nulo, los números son de la forma:

±0,1x−2 ... x−k · be.

© FUOC • PID_00153515 69 Representación de la información numérica

Para la representación de números en coma flotante dentro de los computa-

dores, se aprovechan las ventajas que comporta la asunción de las restriccio-

nes anteriores. La primera que se deriva de éstas es que no hay que almacenar

la base de numeración, porque se asume que es 2, tanto para la mantisa como

para el exponente.

La codificación en coma flotante debe incorporar la información de signo, el

valor de la mantisa y el del exponente. La figura siguiente muestra el orden en

el que es habitual disponer estos valores dentro del conjunto de dígitos dispo-

nibles para la representación:

Como se ve en la figura, un bit se destina a la representación del signo. La co-

dificación habitual del bit de signo es 0 para indicar signo positivo y 1 para

indicar signo negativo.

El valor del exponente en las representaciones en coma flotante suele estar res-

tringido a los enteros. Para codificarlo, lo más habitual es utilizar una represen-

tación en exceso a M, donde M toma frecuentemente los valores 2q−1 o 2q−1 − 1,

en los que q es el número de bits disponibles para la codificación del exponente.

Las alternativas de representación de la mantisa y el exponente, y también las po-

sibilidades de combinar signo, exponente y mantisa en la codificación final hacen

que el número de posibles representaciones en coma flotante sea muy amplio.

En este curso, si no se especifica otra cosa, utilizaremos representaciones en

coma flotante en las que el signo, el exponente y la mantisa los encontraremos

en este orden. Un 0 en el bit de signo indicará signo positivo, mientras que un

1 indicará signo negativo. El exponente estará codificado en exceso a M, con

M = 2q−1, donde q es el número de bits disponibles para la representación del

exponente y la mantisa será normalizada con la coma a la derecha del primer

bit no nulo.a

En un formato de coma flotante de 8 bits con mantisa normalizada de 4 bits

y exponente en exceso a M, en el que M toma el valor 2q−1 y q es el número de

bits disponibles para la representación del exponente, la codificación del nú-

mero −10,11(2 · 22 es la que se muestra en la figura siguiente:

El orden de precedencia signo-exponente-mantisa no es el único

posible, pero sí que es el orden más utilizado.

El tipo de representación

Aunque exceso a M sea la re-presentación más habitual del exponente, se puede utilizar cualquier otro tipo de repre-sentación de números enteros, como por ejemplo Ca2.

Exceso a 4 porque...

... hay un total de 8 bits, de los cuales 4 son para representar la mantisa normalizada y 1 para codificar el signo. Para el expo-nente quedan 3 bits. Si M toma el valor 2q−1, M = 23−1 = 22 = 4. El exponente se representa en exceso a 4.

© FUOC • PID_00153515 70 Representación de la información numérica

La siguiente tabla muestra algunos números representados en este formato:

En la tabla precedente podemos observar que el primer bit de la mantisa (colum-

na R) siempre es 1. El motivo es el tipo de codificación que hemos elegido para

la mantisa. Las mantisas son de la forma 1,x−1x−2… Tienen una parte fija (1,) y

una parte variable (x−1x−2…). Para optimizar recursos, podemos almacenar sólo

la parte variable, ya que la parte fija es conocida y común a todos los números.

Esto permitirá almacenar 1 bit más para la mantisa, de manera que aumentará

la precisión, o bien utilizar un bit menos en la representación. Las mantisas al-

macenadas con esta técnica reciben el nombre de mantisas con bit implícito.

El uso del bit implícito permite almacenar mantisas 1 bit mayores, es decir, redu-

cir en 1 bit el número de bits necesarios para la representación de la mantisa.a

Codificación de un número decimal en coma flotante normalizada y binaria

Para codificar el número +104(10 en un formato de coma flotante normalizada de 8 bits,de los cuales 3 bits se destinan a la mantisa con bit implícito y exponente en exceso a M,seguiremos el proceso siguiente:

1) Codificar el número +104(10 en base 2. Si aplicamos el método de cambio de base basado en divisiones sucesivas, obtenemosque 104(10 = 1101000(2.

2) Normalizar la mantisa de la forma 1,x−1x−2x−3…: 1101000(2 = 1,101 · 26.

3) Identificar el signo, el exponente y la mantisa.a) El número es positivo; por lo tanto, el bit de signo será 0: S = 0.b) La mantisa de este número es 1,101. El formato indica que trabajamos con unamantisa de 3 bits y bit implícito. Por lo tanto, guardaremos los 3 bits a la derecha dela coma: 101.c) El exponente toma el valor 6.

4) Codificar en exceso a M el exponente. De los 8 bits del formato, 3 se utilizan para lamantisa y 1 para el signo. Quedan 4 para el exponente. Por lo tanto, el valor del excesoes 24−1 = 23 = 8. El 6(10 codificado en exceso a 8 es 6(10 + 8(10 = 14(10. Si aplicamos otra vezel método de cambio de base basado en divisiones sucesivas, encontramos que el 14(10en base 2 es el 1110(2. Por lo tanto, e = 1110.

5) Juntar las codificaciones de signo, exponente y mantisa en el orden de precedencia co-rrecto (S – e − R) para obtener la representación final:

Por lo tanto, la codificación del número +104(10 en el formato binario de coma flotanteespecificado es 01110101.

Números S e R

−1,101(2 · 2−1 1 0 1 1 1 1 0 1

1,101(2 · 2−1 0 0 1 1 1 1 0 1

0,01(2 · 2−1 0 0 0 1 1 0 0 0

−110(2 · 2−1 1 1 0 1 1 1 0 0

La técnica del bit implícito consiste en almacenar sólo la parte variable

de las mantisas normalizadas y asumir la parte fija como conocida y de-

finida en el formato de la representación.

S Exponente Mantisa

0 1 1 1 0 1 0 1

A lo largo del texto, utilizaremos las letras S, e y R para referirnos,

respectivamente, al signo, el exponente y la mantisa.

El cambio de base

Para cambiar a base 2 el 104(10 hacemos divisiones sucesivas:104 = 52 · 2 + 0

52 = 26 · 2 + 013 = 6 · 2 + 1

6 = 3 · 2 + 03 = 1 · 2 + 11 = 0 · 2 + 1

104(10 = 1101000(2

El cambio de base

Para cambiar a base 2 el 14(10 hacemos divisiones sucesivas:14 = 7 · 2 + 017 = 3 · 2 + 113 = 1 · 2 + 111 = 0 · 2 + 114(10 = 1110 (2

El subrayado destaca la posición del exponente dentro de una cadena de bits que codifica un número en

coma flotante.

© FUOC • PID_00153515 71 Representación de la información numérica

Descodificación de un número en coma flotante normalizada binaria

Para encontrar el valor decimal del número 01010101 que está en un formato de comaflotante normalizada de 8 bits con 4 bits de mantisa con bit implícito y exponente enexceso, seguiremos el proceso siguiente:

1) Identificar el signo.Si asumimos que el formato mantiene signo, exponente y mantisa en este orden, el bitdel extremo izquierdo codifica el signo. En el 01010101 el primer bit es 0; por lo tanto,el signo es positivo.

2) Identificar la mantisa.Dado que la mantisa ocupa las cuatro posiciones más bajas, se trata de los bits 0101. Aho-ra bien, el formato indica la existencia del bit implícito. Por lo tanto, la mantisa es enrealidad 1,0101(2.

3) Identificar el exponente.El exponente es determinado por los 3 bits que quedan:

M toma el valor 2q−1, por lo cual M = 23−1 = 22 = 4. De este modo, el exponente codificadoes 101(2 − 4(10 = 5(10 − 4(10 = 1(10. El exponente e = 1(10.

4) Juntar signo, exponente y mantisa.Signo positivo, mantisa 1,0101(2 y exponente 1(10: el número representado es el +1,0101 · 21.

5) Hacer un cambio de base para encontrar el valor decimal.Si aplicamos el TFN, encontramos que:

+1,0101(2 · 21 = (1 · 20 + 0 · 2−1 + 1 · 2−2 + 0 · 2−3 + 1 · 2−4) · 21 = 21 + 2−2 · 21 + 2−4 · 21 =

+2,625(10

Por lo tanto, el número 01010101 codifica en el formato de coma flotante especificadoel valor decimal +2,625(10.

Para encontrar el número 10010001 que está en un formato de coma flotante normali-zada de 8 bits con 5 bits de mantisa con bit implícito y exponente en exceso, seguiremosel proceso siguiente:

1) Identificar el signo.Si asumimos que el formato mantiene signo, exponente y mantisa en este orden, el bitdel extremo izquierdo codifica el signo. En el 10010001 el primer bit es 1; por lo tanto,el signo es negativo.

2) Identificar la mantisa.Dado que la mantisa ocupa las cinco posiciones más bajas, se trata de los bits 10001. Elformato indica la existencia de bit implícito. Por lo tanto, la mantisa es en realidad1,10001(2.

3) Identificar el exponente.El exponente es determinado por los 2 bits que quedan:

M toma el valor 2q−1, por lo cual M = 22−1 = 21 = 2. De este modo, el exponente codificadoes 00(2 − 2(10 = 0(10 − 2(10 = −2(10. El exponente e = −2(10.

4) Juntar signo, exponente y mantisa.Signo negativo, mantisa 1,10001(2 y exponente −2(10: el número representado es el −1,10001(2 · 2

−2.

5) Hacer un cambio de base para encontrar el valor decimal.Si aplicamos el TFN, encontramos que

−1,10001(2 · 2−2 = −(1 · 20 + 1 · 2−1 + 0 · 2−2 + 0 · 2−3 + 0 · 2−4 + 1 · 2−5) · 2−2 =

= −(2−2 + 2−1 · 2−2 + 2−5 · 2−2) = −0,3828125(10

Por lo tanto, el número 10010001 codifica en el formato de coma flotante especificadoel valor decimal −0,3828125(10.

S Exponente Mantisa

0 1 0 1 0 1 0 1

S e Mantisa

1 0 0 1 0 0 0 1

© FUOC • PID_00153515 72 Representación de la información numérica

2.5.1. Rango de representación en coma flotante

La definición de rango de representación establece que es el menor interva-

lo que contiene todos los números representables en un sistema de repre-

sentación numérica. Para conocer el rango de representación de un formato

en coma flotante, debemos encontrar el número mayor y el menor que po-

demos representar.

Los pasos que hay que seguir para la determinación del rango de una represen-

tación en coma flotante son:

1) Obtener el mayor valor del exponente.

2) Obtener el mayor valor de la mantisa.

3) Encontrar la mayor magnitud representable con la combinación de estos

valores.

El rango está delimitado por los valores positivo y negativo de esta magnitud.

La mayor magnitud que podemos representar en coma flotante es aquella que tie-

ne el exponente mayor con la mantisa mayor. El rango de representación del

exponente, si asumimos que está codificado en exceso a M y M = 2q−1 donde

q es el número de bits disponibles para la representación del exponente, es

[−2q−1, 2q−1 − 1]. El valor máximo del exponente será, por lo tanto, 2q−1 − 1 = M − 1.

El valor máximo de la mantisa, que en este curso consideramos que está nor-

malizada de la forma 1,x−1x−2…, es aquél en el que todos los bits (todos los

xi) son 1. Con k bits para la representación, la mantisa normalizada y bit im-

plícito, el valor máximo es de la forma 1, 11 11. Hay k + 1 bits, porque

debemos incluir el bit implícito que no se almacena en la representación.

Para encontrar el valor de esta mantisa, calculamos:

Por lo tanto, la mayor magnitud que podemos representar en el formato de

coma flotante descrito es:

Rango en exceso a M

El rango en exceso a M es [−M, 2q−1−M ], donde q es el número de bits disponibles. Si M toma el valor 2q−1 queda el rango siguiente: [−2q−1, 2q − 1 − 2q−1] = [−2q−1, 2q − 2q−1 − 1] = [−2q−1, 2q−1 − 1] = [−M, M − 1]

k+1...

( )1 01 1

1 2 1 0 2 21,11 11 111 11 · 2 2 2 2 2 2 · 2 · 2

2 1

kk kk k k k k k

++ +− − − − −⎛ ⎞−

= = + + + + = =⎜ ⎟−⎝ ⎠

( )1

1 12 1 1· 2 2 1 · 2 2 2 2

1 2

kk k k k

k

+− + − −⎛ ⎞−

= = − = − = −⎜ ⎟⎝ ⎠

( ) ( )( )1 12 1

11 1 11 1 22 · 2 2 · 2 2 · 2 2 2 2 · 1 2

2 2 2

q MkM M M M k M

k k k

− −−− +− − − −⎛ ⎞ ⎛ ⎞− = − = − = − = −⎜ ⎟ ⎜ ⎟

⎝ ⎠ ⎝ ⎠

© FUOC • PID_00153515 73 Representación de la información numérica

En las representaciones de coma flotante, el signo se representa con un bit

que lo codifica. Por este motivo, la cantidad de números positivos que se

pueden representar es exactamente igual a la de números negativos. Es un

sistema de representación totalmente simétrico. Por lo tanto, el rango está

determinado por los valores positivo y negativo de la mayor magnitud repre-

sentable.

El rango establece el intervalo que contiene los valores representables, pero

esto no quiere decir que se puedan representar todos los números contenidos

en el intervalo. De hecho, en el formato de coma flotante definido no se puede

representar el cero, ya que la menor mantisa que se puede representar es dife-

rente de cero, a causa del bit implícito, precisamente.a

Por este motivo, el rango de representación de los formatos en coma flotante

se da como la unión de dos intervalos, uno que incluye todos los números ne-

gativos representables y otro que incluye todos los números positivos repre-

sentables.

La menor magnitud que se puede representar en un formato de coma flotante

con bit implícito es la que tiene la mantisa de menor magnitud y el menor ex-

ponente. La menor mantisa es de la forma 1,0…0, y el menor exponente re-

presentable en exceso a M es −M.

La mayor magnitud que podemos representar en un formato de coma

flotante de n bits, de los cuales k bits representan la mantisa normaliza-

da de la forma 1,x−1x−2… (es decir, con la coma a la derecha del primer

bit a 1), con bit implícito y exponente de q bits en exceso a M, si asumi-

mos que M toma el valor 2q−1 es:

Por lo tanto, el rango de representación de un formato de coma flotante

de n bits, de los cuales k bits representan la mantisa normalizada de la

forma 1,x−1x−2… (es decir, con la coma a la derecha del primer bit a 1),

con bit implícito y exponente de q bits en exceso a M, si asumimos que

M toma el valor 2q−1 es:

( )12 111 12 · 2 2 · 2

2 2

qM

k k

− −−⎛ ⎞ ⎛ ⎞− = −⎜ ⎟ ⎜ ⎟⎝ ⎠ ⎝ ⎠

( ) ( )− −

− −

− −

⎡ ⎤⎛ ⎞ ⎛ ⎞− − + − =⎢ ⎥⎜ ⎟ ⎜ ⎟⎝ ⎠ ⎝ ⎠⎣ ⎦

⎡ ⎤⎛ ⎞ ⎛ ⎞= − − + −⎢ ⎥⎜ ⎟ ⎜ ⎟⎝ ⎠ ⎝ ⎠⎣ ⎦

1 1

1 1

2 1 2 1

1 12 · 2 , 2 · 2

2 2

1 12 · 2 , 2 · 2

2 2

q q

M Mk k

k k

El problema de la representación del cero

El problema de la representa-ción del cero se soluciona en algunos formatos de coma flo-tante si reservamos una codifi-cación determinada para representarlo. Por ejemplo, en el estándar IEEE754, cuando los bits de exponente y manti-sa son ceros se asume que se trata del valor cero. De una manera semejante, se reservan otras codificaciones para repre-sentar valores que tienen un in-terés especial, como por ejemplo +∞ y −∞.

© FUOC • PID_00153515 74 Representación de la información numérica

Por lo tanto, no se pueden representar números dentro del intervalo abierto

, en donde se incluye el cero.a

Sin embargo, esto nos permite ajustar el rango de representación como la

unión de dos intervalos, con lo cual se excluye el intervalo abierto de no re-

presentación que acabamos de definir.

Los parámetros que definen el formato de coma flotante, como por ejemplo

la existencia o no de bit implícito, la manera de normalizar la mantisa, el nú-

mero de bits destinados al exponente y los destinados a la mantisa y el tipo

de codificación del exponente influyen directamente sobre el rango. En cada

caso, se debe hacer el cálculo de acuerdo con estos parámetros para determi-

narlo.a

La ampliación del formato de coma flotante es una combinación de la amplia-

ción de la representación del exponente y la representación de la mantisa. La

ampliación o extensión en coma flotante consiste en convertir los números re-

presentados en un formato con q bits para el exponente y k bits para la man-

tisa a un formato con p + q bits para el exponente y j + k bits para la mantisa.

Si consideramos que el exponente está en exceso a M, la ampliación de q a p + q

bits para el exponente sigue el procedimiento que ya hemos descrito.

La menor magnitud que se puede representar en un formato de coma

flotante de n bits, de los cuales k bits representan la mantisa normaliza-

da de la forma 1,x−1x−2… (es decir, con la coma a la derecha del primer

bit a 1), con bit implícito y exponente de q bits en exceso a M, si asumi-

mos que M toma el valor 2q−1 es:

1,0 · 2−M = 2−M = 2−2q−1

El rango de representación de un formato de coma flotante de n bits, de

los cuales k bits representan la mantisa normalizada de la forma 1,x−1x−2 ···

(es decir, con la coma a la derecha del primer bit a 1), con bit implícito

y exponente de q bits en exceso a M, si asumimos que M toma el valor

2q−1 es:

Esta manera de especificar el rango muestra las magnitudes mayores y

menores que se pueden representar y pone de manifiesto que no se pue-

de representar el cero.

Intervalos abiertos y cerrados

Un intervalo es abierto cuando no incluye los valores numéri-cos que lo delimitan; cerrado, cuando los incluye.

( ) ( )( )1 12 22 , 2q q− − − −

1 11 12 · 2 , 2 2 , 2 · 2

2 2M M M M

k k− − − −⎡ ⎤ ⎡ ⎤⎛ ⎞ ⎛ ⎞− − + + −⎢ ⎥ ⎢ ⎥⎜ ⎟ ⎜ ⎟

⎝ ⎠ ⎝ ⎠⎣ ⎦ ⎣ ⎦∪

Podéis ver la ampliación de los números representados en exceso a M en el subapartado 2.3.10 de este módulo.

© FUOC • PID_00153515 75 Representación de la información numérica

La extensión de una mantisa fraccionaria es sencilla. Convertir una mantisa

fraccionaria de k bits en una representación de j + k bits sólo comporta añadir

j ceros a la derecha. El bit de signo no cambia.

Extensión de un formato de coma flotante

Para extender la codificación 10100100 que representa un número en formato de comaflotante de 8 bits, donde 4 bits son de mantisa fraccionaria y 3 bits de exponente en ex-ceso a M, con M = 2q−1 donde q es el número de bits para el exponente, a un formato de16 bits donde 7 son de mantisa y 8 de exponente en exceso a M con M = 2q−1y q el númerode bits del exponente, procederemos de la siguiente manera:

1) Identificar signo, mantisa y exponente de la codificación 10100100:

signo = 1mantisa = 0100exponente = 010

2) Extender la mantisa fraccionaria.

Pasar de 4 a 7 bits equivale a añadir tres ceros a la derecha:

0100 → 0100000

3) Ampliar el exponente.

El exponente de 3 bits hace que el exceso tome el valor M = 4 , ya que 2q−1 = 23−1 = 22 =4. Al pasar a 8 bits, M toma el valor 128, ya que 2q−1 = 28−1 = 27 = 128.

La codificación de 3 bits 010 en exceso a 4 se extiende a una codificación de 8 bits enexceso a 128 añadiendo cinco unos a la derecha del bit de más peso (es un número ne-gativo, puesto que empieza por cero y la diferencia en número de bits es 5, 8 − 3 = 5).

010 → 01111110

4) Juntar la mantisa nueva y el exponente nuevo con el signo para obtener la codifica-ción nueva:

1011111100100000

2.5.2. Precisión de una representación en coma flotante

La precisión de una representación es la distancia entre dos números represen-

tables. Si analizamos el número 0100101, que está en coma flotante de 8 bits,

mantisa normalizada y bit implícito y exponente de 4 bits, encontraremos que

es el +1,010(2 · 21. El número representable que lo sigue es aquel que obtene-

La ampliación de una codificación en coma flotante con q bits para el

exponente representado en exceso a M, y k bits para la mantisa fraccio-

naria, a un formato con p + q bits para el exponente y j + k bits para la

mantisa, se consigue si mantenemos el bit de signo inicial y hacemos la

extensión de la mantisa y del exponente.

La ampliación de una mantisa fraccionaria de k bits a una mantisa

fraccionaria de j + k bits se consigue si añadimos j ceros a la derecha de

la mantisa.

La ampliación de un exponente en exceso a M se consigue si aplica-

mos la extensión a p + q bits de un formato en exceso a M.

© FUOC • PID_00153515 76 Representación de la información numérica

mos si sumamos 1 al bit menos significativo de la mantisa, es decir, el +1,011(2

· 21. De una manera semejante, el número representable anterior al 1,010(2 ·

21 corresponde al que obtenemos si restamos 1 en el bit menos significativo

de la mantisa, es decir, el 1,001(2 · 21. Podemos ver que la distancia entre el

1,010(2 · 21 y el 1,011(2 · 2

1 es 0,001(2 · 21 y que la distancia entre el 1,010(2 · 2

1

y el 1,001(2 · 21 también es 0,001(2 · 2

1.

Consideremos ahora el número 01011010(2, que está codificado en el mismo for-

mato. Si analizamos este número, encontraremos que se trata del +1,010(2 · 23. Si

seguimos el mismo procedimiento, podemos obtener el número siguiente y el

anterior, que corresponden, respectivamente, al 1,011(2 · 23 y el 1,001(2 · 2

3.

En este caso, la distancia entre los números es 0,001(2 · 23. La distancia que se-

para estos números es diferente de la que hemos encontrado anteriormente,

aunque se trata del mismo formato de coma flotante.

En las representaciones de coma flotante, la distancia que separa dos números

representables consecutivos depende de su magnitud.a

El hecho de que la distancia sea distinta es a causa de la diferencia en el valor

del exponente. La distancia entre números consecutivos se mantiene si el ex-

ponente es el mismo.

El hecho de que la distancia entre un número representable y el siguiente de-

penda del número representado comporta que, a diferencia de lo que ocurre en la

coma fija, en coma flotante la distancia entre los números no es constante. Por lo

tanto, la distribución de los números representables en coma flotante sobre la rec-

ta de los reales no es uniforme. La figura siguiente muestra este hecho de una

manera esquemática:

La precisión de un formato de coma flotante de n bits, de los cuales k

bits representan la mantisa normalizada de la forma 1,x−1x−2… (es decir,

con la coma a la derecha del primer bit a 1), con bit implícito y expo-

nente de q bits en exceso a M, si asumimos que M toma el valor 2q−1 es:

2−k · 2e

donde e es el valor del exponente del número representado.

© FUOC • PID_00153515 77 Representación de la información numérica

La figura muestra la distribución de los números representables con 5 bits en

coma fija y en coma flotante. Los números en coma fija (bajo) son de la forma

±x0,x−1x−2x−3 (1 bit por el signo y 4 por la magnitud con 3 bits fraccionarios) y

tienen una distribución uniforme. Los números en coma flotante (arriba) son

de la forma ±1,x−1x−2 · 2e (mantisa de 2 bits normalizada y con bit implícito y

exponente de 2 bits en exceso a M) y la distribución es simétrica respecto del

cero, pero no uniforme.

La cantidad de números representables es la misma en los dos formatos (salvo

el problema del doble cero de la coma fija). Las dos representaciones disponen

de 4 bits para representar la magnitud y 1 bit para representar el signo. Ahora

bien, la diferencia en la distribución hace que la representación de coma flo-

tante tenga un rango mayor que la de coma fija. Además, la precisión en coma

flotante es mejor (los números son más cercanos) cuando los números repre-

sentados son pequeños.

Error de representación en coma flotante

En los ejemplos de codificación que preceden, los números se pueden codificar

de una manera exacta, es decir, no es necesario hacer ningún tipo de aproxima-

ción. Ahora bien, cuando la mantisa no cabe en los bits que en el formato se

destinan para representarla, la debemos aproximar a partir de uno de los dos

métodos presentados, redondeo o truncamiento, lo cual introduce un error de

representación: el número representado no es exactamente el que queríamos re-

presentar, sino un número cercano.a

En este curso asumiremos que, por defecto, el método de aproximación apli-

cado a las mantisas es el truncamiento.a

Codificación en coma flotante normalizada binaria de un número en base 10 con aproximación

Para codificar el número −85,3(10 · 102 en un formato de coma flotante normalizada de16 bits, de los cuales 7 bits son de mantisa, con bit implícito y exponente en exceso a M,seguiremos el siguiente proceso:

1) Codificar el número −85,3(10 · 102 en base 2.

El número −85,3(10 · 102 lo podemos escribir como −8530(10. Si aplicamos el método decambio de base basado en divisiones sucesivas, obtenemos que −8530(10 = −10000101010010(2.

2) Normalizar la mantisa de la forma 1,x−1x−2x−3…:

−10000101010010(2 = −1,0000101010010(2 · 213

3) Identificar el signo, el exponente y la mantisa.

a) El número es negativo; por lo tanto, el bit de signo será 1: S = 1.

b) La mantisa de este número es 1,0000101010010(2. El formato indica que trabajamoscon bit implícito. Por lo tanto, la mantisa que hay que almacenar debería ser000010101001. Esta mantisa no cabe en los 7 bits disponibles en el formato y, de estemodo, la deberemos aproximar. Si utilizamos la técnica del truncamiento, los 7 bits quealmacenaremos son 0000101.

c) El exponente toma el valor 13.

Podéis ver las aproximaciones por redondeo y por truncamiento en el subapartado 2.1.4 de este módulo.

Errores máximos

El error máximo del redondeo es la mitad del error máximo del truncamiento, pero compu-tacionalmente es más costoso.

© FUOC • PID_00153515 78 Representación de la información numérica

4) Codificar en exceso a M el exponente.

De los 16 bits del formato, 7 se utilizan para la mantisa y 1, para el signo. Quedan 8 parael exponente. Por lo tanto, si tomamos el exceso como 2q−1, el valor es 28−1 = 27 = 128. El13(10 codificado en exceso a 128 es 13(10 + 128(10 = 141(10. Si aplicamos otra vez el métodode cambio de base basado en divisiones sucesivas, encontramos que el 141(10 en base 2es el 10001101(2. Por lo tanto, e = 10001101.

5) Juntar las codificaciones del signo, exponente y mantisa en el orden de precedenciacorrecto (S – e − R) para obtener la representación final:

6) Analizar el error.

Hemos hecho un truncamiento de la mantisa donde hemos perdido los bits significativospara la representación. Por lo tanto, el número representado no corresponde exactamen-te al número que queríamos representar. Para calcular el error cometido, debemos calcu-lar la distancia entre el número que queríamos representar y el número que realmentehemos representado. El número que hemos representado es: −1,0000101(2 · 2

13 = −8512(10mientras que el número que queríamos representar es el −8530(10. Por lo tanto, el errorcometido es ⏐−8530(10 − (− 8512(10)⏐ = 28(10.

Por lo tanto, la codificación del número −85,3(10 · 102 en el formato binario de coma flo-tante especificado es 1100011010000101 y el error cometido en la representación es 28(10.

Desbordamiento en coma flotante

Los números fuera del rango de representación no son representables. Como

ejemplo, intentamos codificar el número +2345(10 en un formato de coma flotan-

te de 8 bits, con mantisa normalizada de 3 bits y exponente de 4 bits en exceso a 8:

1) Codificamos el número 2345(10 en base 2.

Si aplicamos el método de cambio de base basado en divisiones sucesivas, ob-

tenemos que 2345(10 = 100100101001(2.

2) Normalizamos la mantisa de la forma 1,x−1x−2x−3…:

100100101001(2 = 1,00100101001(2 · 211.

3) Identificamos el signo, el exponente y la mantisa.

a) El número es positivo; por lo tanto, el bit de signo será 0: S = 0.

b) La mantisa de este número es 1,00100101001. El formato indica que traba-

jamos con una mantisa de 3 bits y bit implícito. Truncaremos la mantisa en

los 3 bits que podemos almacenar, de manera que nos queda 001.

c) El exponente toma el valor 11(10.

4) Codificamos en exceso a 8 el exponente:

El 11(10 codificado en exceso a 8 es 11(10 + 8(10 = 19(10. Si volvemos a aplicar el

método de cambio de base basado en divisiones sucesivas, encontramos que

el 19(10 en base 2 es el 10011(2. Por lo tanto, e = 10011.

S Exponente Mantisa

1 1 0 0 0 1 1 0 1 0 0 0 0 1 0 1

Para encontrar el valor decimal representado por −1,0000101(2 · 2

13 debemos hacer un cambio de base

aplicando el TFN.

Cambio de base

Para pasar a base 2 el 2345(10 hacemos divisiones sucesivas:2345 = 1172 · 2 + 11172 = 586 · 2 + 01586 = 293 · 2 + 01293 = 146 · 2 + 11146 = 73 · 2 + 11173 = 36 · 2 + 01136 = 18 · 2 + 01118 = 9 · 2 + 01119 = 4 · 2 + 11114 = 2 · 2 + 01112 = 1 · 2 + 01111 = 0 · 2 + 1

2345(10 = 100100111001 (2

Cambio de base

Para cambiar a base 2 el 19(10 hacemos divisiones sucesivas:19 = 9 · 2 + 119 = 4 · 2 + 114 = 2 · 2 + 012 = 1 · 2 + 011 = 0 · 2 + 119(10 = 1110 (2

© FUOC • PID_00153515 79 Representación de la información numérica

El exponente e = 10011 no se puede representar con los 4 bits disponibles. Por

lo tanto, el número +2345(10 no se puede representar en el formato especificado

ya que el exponente necesario está fuera del rango de representación del expo-

nente. Este fenómeno recibe el nombre de desbordamiento del exponente.

Un fenómeno semejante se da cuando el exponente es demasiado pequeño. In-

tentemos codificar el número +0,00244140625(10 en un formato de coma flotante

de 8 bits, con mantisa normalizada de 3 bits y exponente de 4 bits en exceso a 8:

1) Codificamos el número +0,00244140625(10 en base 2.

Aplicamos el método de cambio de base basado en divisiones sucesivas y ob-

tenemos que 0,00244140625 (10 = 0,00000000101(2.

2) Normalizamos la mantisa de la forma 1,x−1x−2x−3…:

0,00000000101(2 = 1,01(2 · 2−9

3) Identificamos el signo, el exponente y la mantisa.

a) El número es positivo; por lo tanto, el bit de signo será 0: S = 0.

b) La mantisa de este número es 1,01. El formato indica que trabajamos con

una mantisa de 3 bits con bit implícito. Por lo tanto, nos queda 010.

c) El exponente toma el valor −9.

4) Codificamos en exceso a 8 el exponente:

El −9(10 codificado en exceso a 8 es −9 (10 + 8(10 = −1(10. Este número es negativo

y, por lo tanto, está fuera del rango de representación en exceso a 8 empleado

en o por el exponente.

La codificación −1(10 para el exponente en exceso a 8 no es válida. Obtenemos

esta codificación porque el valor del exponente es demasiado pequeño para

poder ser representado en exceso a 8. Este fenómeno recibe el nombre de des-

bordamiento a cero del exponente.

El desbordamiento del exponente se da cuando el exponente necesa-

rio para codificar un número en un formato de coma flotante supera el

mayor valor representable por el exponente.

El desbordamiento a cero del exponente se da cuando el exponente

necesario para codificar un número en un formato de coma flotante es

inferior al menor valor representable por el exponente.

Cambio de base

Para pasar a base 2 el 0,00244140625 (10 hacemos multiplicaciones sucesivas:0,00244140625 · 2 =

= 0,0048828125 + 00,0048828125 · 2 =

= 0,009765625 + 00,009765625 · 2 =

= 0,01953125 + 00,01953125 · 2 =

= 0,0390625 + 0

0,0390625 · 2 = 0,078125 + 00,078125 · 2 = 0,15625 + 00,15625 · 2 = 0,3125 + 00,3125 · 2 = 0,625 + 00,625 · 2 = 0,25 + 10,25 · 2 = 0,5 + 00,5 · 2 = 0 + 10,00244140625 (10 =

= 0,00000000101(2

© FUOC • PID_00153515 80 Representación de la información numérica

2.5.3. Suma en coma flotante

La suma directa de los números en coma flotante +1,34(10 · 101 y +45,2(10 · 10−3

es complicada. La dificultad reside en el hecho de que no sabemos qué dígitos

debemos sumar. Para facilitar la tarea, hay que llevar a cabo una operación pre-

via que consiste en igualar los exponentes.

En este sentido, cambiamos la representación del número menor de manera

que el exponente coincida con el exponente del número mayor. De este mo-

do, podremos hacer la suma sin dificultades.

En el caso de los números +1,34(10 · 101 y +45,2(10 · 10−3, transformaremos la

representación del +45,2(10 · 10−3 para que el exponente sea 1:

+45,2(10 · 10−3 = 0,00452(10 · 101

A continuación, podremos hacer la operación de suma:

Finalmente, deberemos ajustar el exponente para conseguir colocar la coma

en la posición deseada. Por ejemplo, 13,4452(10 · 100.

Suma de dos números codificados en una representación de coma flotante normalizada y binaria

Para sumar los números 01010101 y 00011001 que están en un formato de coma flotantede 8 bits con 3 bits para la mantisa normalizada y con bit implícito, procederemos de lamanera siguiente:

1) Descodificar los números.

Si seguimos el procedimiento de descodificación, encontraremos que en este formato de comaflotante el 01010101 represnta el +1,0101(2 · 2

1 y el 00011001 represnta el +1,1001(2 · 2−3.

2) Igualar exponentes.

Cambiamos la representación del número menor (el +1,1001(2 · 2−3) para que tenga el

mismo exponente que el número grande (que es 21): +1,1001(2 · 2−3 = 0,00011001(2 · 2

1.

3) Sumar las mantisas.

El resultado de la suma tiene más bits que los disponibles en la representación. Esto haceque este resultado no se pueda almacenar de manera exacta. Por este motivo, será nece-sario aproximar el resultado. Si trabajamos con truncamiento, el resultado de la suma se

1 , 3 4 0 0 0 (10 · 101

+ 0 , 0 0 4 5 2 (10 · 101

1 , 3 4 4 5 2 (10 · 101 ← resultado

1 ← transportes

0 , 0 0 0 1 1 0 0 1 (2 · 21

+ 1 , 0 1 0 1 0 0 0 0 (2 · 21

1 , 0 1 1 0 1 0 0 1 (2 · 21 ← resultado

© FUOC • PID_00153515 81 Representación de la información numérica

almacenará como 1,0110(2 · 21. La codificación de este número en el formato especificado

es 00010110(2.

El ejemplo anterior muestra la operación de suma de números en coma flotan-

te. La operación de resta sigue las mismas pautas en lo que respecta a la nece-

sidad de igualar los exponentes para llevar a cabo la operación.a

Representaciones estandarizadas en coma flotante

En las representaciones de coma flotante no hay ninguna manera natural de

elegir el tamaño de los diferentes elementos (exponente y mantisa). Podría-

mos elegir cualquier manera de hacerlo. El hecho de elegir una representación

que nos guste implica que la representación se adaptará mejor a los números

reales con los que nos interesa trabajar. En contrapartida, dificulta notable-

mente el intercambio de información entre diferentes representaciones y, en

definitiva, entre diferentes personas y organizaciones. Por este motivo, gene-

ralmente se utilizan representaciones estándares, es decir, con número de bits

para el exponente y para la mantisa predeterminados.

La representación de coma flotante más extendida es la definida por la norma

IEEE754 del IEEE. Esta norma define dos representaciones de coma flotante

con mantisa normalizada (de la forma 1,x−1…x−k) y bit implícito, que son uti-

lizadas en la mayoría de los computadores de la actualidad. Estas representa-

ciones son las que se presentan en la siguiente tabla:

Estas representaciones se recogen directamente en los principales lenguajes de

programación. De esta manera, en el lenguaje C la representación de precisión

sencilla recibe el nombre de float, mientras que la representación doble recibe

el nombre de double.

Además de definir los formatos, la norma define también distintas cuestiones

de carácter práctico, como por ejemplo los procedimientos para llevar a cabo las

operaciones (suma, resta, redondeo, truncamiento, etc.) y los mecanismos de

detección de problemas (desbordamiento, desbordamiento a cero del exponen-

Es habitual que el resultado de las operaciones entre números en coma

flotante no se pueda representar de manera exacta. Esto hace que se in-

troduzca un error de representación cada vez que se lleva a cabo una

operación aritmética. El error que se introduce aquí es menor que la pre-

cisión de la representación.

Nombre Bits Bits exponente Exceso exponente

Single (precisión sencilla) 32 8 127

Double (precisión doble) 64 11 1023

El uso de representaciones estándares favorece el intercambio de información entre organismos

distintos.

IEEE

El IEEE (Institute of Electrical and Electronic Engineers) es una or-ganización profesional de origen norteamericano dedicada, entre otras cosas, a definir y formalizar estándares industriales.

Otras representaciones

Hay otras representaciones de-finidas por el IEEE en las que se utiliza un número mayor de bits. Son las denominadas re-presentaciones de precisión ex-tendida.

Las representaciones estándares incluyen mecanismos para

representar números especiales.

© FUOC • PID_00153515 82 Representación de la información numérica

te, etc.). También define una cuestión muy relevante, como son los mecanismos

de representación de algunos números especiales. Dos de estos números espe-

ciales son el cero y el infinito. Si analizamos cuidadosamente una representa-

ción de coma flotante normalizada, como por ejemplo la de precisión sencilla,

el número con menor valor absoluto que se puede representar es aquel que tiene

la menor mantisa y el exponente más negativo, es decir, el:

1,00…00(2 · 2−127

Por lo tanto, no es posible representar el cero directamente. El cero es un nú-

mero que tiene una relevancia especial, por lo cual conviene buscar alguna

manera de representarlo. Por convenio, se ha decidido que el menor número

que se puede representar hará el papel del cero. Si analizamos cuál es la forma

que presenta este número en forma binaria, se observa que es (en el caso de

una representación de precisión sencilla) la siguiente:

Está compuesto únicamente por ceros y es una representación lo bastante na-

tural para el número 0. Hay que tener en cuenta que el cero tiene una repre-

sentación doble. La codificación

que corresponde al cero con signo negativo también representa al cero.

Otro símbolo un poco especial es el infinito. No se trata de un número estric-

tamente, pero se obtiene como resultado de algunas operaciones, como por

ejemplo:

La norma ha elegido como representación de este símbolo la siguiente codifi-

cación:

es decir, el máximo exponente y la mínima mantisa.

La gestión de estos casos especiales y de todos los fenómenos numéricos que

pueden ocurrir durante las diferentes operaciones implica la construcción de

hardware y algoritmos especiales capaces de gestionarlos. Este tipo de hard-

ware presenta, en general, una complejidad mucho más elevada que la exis-

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

10

∞ =

0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

© FUOC • PID_00153515 83 Representación de la información numérica

tente en el hardware construido para gestionar las representaciones de coma

fija.

Actividades

44. Encontrad el valor decimal que codifican las cadenas de bits siguientes, interpretandoque se trata de números en un formato de coma flotante de 8 bits con mantisa normali-zada de la forma 1,X y con bit implícito:a) 11110010, donde la mantisa es de 4 bits.b) 01010011, donde la mantisa es de 3 bits.

45. Haced las siguientes codificaciones:a) El número −1,335(10 en coma flotante de 8 bits, mantisa de 3 bits normalizada de laforma 1,X y con bit implícito. Haced una aproximación por truncamiento.b) Repetid el apartado anterior, pero con una aproximación por redondeo.c) El número 10,0327(10 en coma flotante de 9 bits, mantisa de 3 bits normalizada de laforma 1,X y con bit implícito. Haced una aproximación por truncamiento.d) Repetid el apartado anterior, pero con una aproximación por redondeo.e) El número −2(10 · 103 en coma flotante de 8 bits, mantisa de 4 bits normalizada de laforma 1,X y con bit implícito. Haced una aproximación por redondeo. f) El número 10(10 · 105 en coma flotante de 8 bits, mantisa de 3 bits normalizada de laforma 1,X y con bit implícito. Haced una aproximación por redondeo.g) El número 2(10 · 10−6

(10 en coma flotante de 8 bits, mantisa de 4 bits normalizada dela forma 1,X y con bit implícito. Haced una aproximación por truncamiento.h) El número −0,0001233(10 en coma flotante de 8 bits, mantisa de 3 bits normalizada dela forma 1,X y con bit implícito. Haced una aproximación por truncamiento.

46. Encontrad la precisión y el error de representación para cada uno de los apartados dela actividad 45.

47. Determinad el mayor número representable en los siguientes formatos:a) Coma flotante de 16 bits, con mantisa normalizada de la forma 1,X, bit implícito y 5bits para el exponente.b) Coma flotante de 10 bits, con mantisa normalizada de la forma 1,X, bit implícito y 6bits para el exponente.

48. Determinad si el número 2,89(10 · 1010 es representable en un formato de coma flo-tante de 16 bits, con mantisa normalizada de la forma 1,X, bit implícito y 5 bits para elexponente.

49. Determinad si el número −1256(10 · 102 es representable en un formato de coma flo-tante de 10 bits, con mantisa normalizada de la forma 1,X, bit implícito y 6 bits para elexponente.

50. Determinad el rango de representación en dos intervalos (rango de los positivos másrango de los negativos) de los siguientes formatos:a) Coma flotante de 16 bits, con mantisa normalizada de la forma 1,X, bit implícito y 5bits para el exponente.b) Coma flotante de 10 bits, con mantisa normalizada de la forma 1,X, bit implícito y 6bits para el exponente.

51. Haced las siguientes sumas. Considerad que los números están en formato de comaflotante de 8 bits, con mantisa normalizada de la forma 1,X, bit implícito y 5 bits para elexponente:a) 00110010 + 00110101b) 10100101 + 10100100c) 11110010 + 10111011

© FUOC • PID_00153515 84 Representación de la información numérica

3. Otros tipos de representaciones

En los apartados precedentes se exponen diferentes sistemas para representar

valores numéricos. Cada uno de estos sistemas tiene ventajas e inconvenientes,

y hay que seleccionar el sistema de representación adecuado para cada caso.

Todos los sistemas presentados están dirigidos a la representación de valores

numéricos. Ahora bien, dentro de los computadores, éste no es el único tipo

de información con el que se trabaja. En los apartados siguientes, se presentan

algunos tipos de representación con utilidades distintas de la representación

de valores numéricos o alfanuméricos.

3.1. Empaquetamiento de la información

Compartir, anotar o analizar información de números codificados en algún

tipo de formato binario es habitual cuando se trabaja en aplicaciones relacio-

nadas con los computadores. Por ejemplo, en coma flotante normalizada de

16 bits, con 7 bits de mantisa y bit implícito, el número 0,169921875(10 se co-

difica de la manera siguiente:

0011111010101110

Dentro de los computadores, procesar una cadena de 16 bits como ésta no pre-

senta dificultades. Ahora bien, trabajarla manualmente es complicado y hace

es cometer errores. El simple hecho de memorizarla pone de manifiesto estas

dificultades.

Para trabajar con este tipo de datos, sería muy conveniente encontrar formas

más compactas de escribirlos. Una manera sencilla de conseguir una represen-

tación más compacta de esta información es condensar la tira de bits en dígitos

hexadecimales. Recordemos la relación que hay entre base 2 y base 16 (16 = 24) y

la manera directa de cambiar entre estas bases.

Para compactar esta cadena de bits, la dividiremos en grupos de 4 bits. Cada

grupo se puede codificar directamente como un dígito hexadecimal. La cade-

na de dígitos hexadecimales es un número natural en base 16. En la figura si-

guiente, se muestra el procedimiento:

Los cambios de base entre estas codificaciones se explican en el subapartado 1.3.3 de este módulo.

© FUOC • PID_00153515 85 Representación de la información numérica

Habitualmente, se coloca el símbolo h al final de la cadena de dígitos para in-

dicar que son dígitos hexadecimales.a

Esta manera de compactar información binaria en cadenas de dígitos hexade-

cimales se denomina empaquetamiento hexadecimal.

El empaquetamiento hexadecimal es muy utilizado en diferentes ámbitos re-

lacionados con los computadores para facilitar el trabajo con números, ins-

trucciones y direcciones de memoria. Este tipo de empaquetamiento se utiliza

sobre cadenas de bits, independientemente del sentido que tengan los bits

dentro de la cadena.a

Empaquetamiento de una cadena de bits

Para empaquetar la cadena de bits 010100100011, procederemos de la manera siguiente:

1) Dividir la cadena en grupos de 4 bits: 0101 − 0010 − 0011.

2) Codificar cada grupo como un dígito hexadecimal: 5 − 2 − 3.

La cadena de dígitos hexadecimales que resulta es 523h. Si empaquetamos en hexadeci-mal la cadena de bits 010100100011, se obtiene la codificación hexadecimal 523h.

El proceso de empaquetamiento en hexadecimal es reversible. Se puede cono-

cer la cadena de bits empaquetada en dígitos hexadecimales si convertimos

cada dígito hexadecimal en un grupo de 4 bits, tal y como se describe en el

subapartado 1.3.3.

Desempaquetamiento

Para desempaquetar la cadena 3ACh seguiremos el siguiente procedimiento:

1) Convertir cada dígito hexadecimal en un grupo de 4 bits:

3(16 = 0011(2A(16 = 1010(2C(16 = 1100(2

2) Juntamos los grupos de 4 bits en una única cadena de bits, y conservamos el orden deprecedencia de los dígitos hexadecimales, con lo cual obtenemos: 0011 1010 1100.

La cadena 3ACh de dígitos hexadecimales empaqueta la cadena de bits 001110101100.

El proceso de desempaquetamiento nos devuelve la cadena de bits que se

había empaquetado, pero no nos da información sobre su sentido. Sólo po-

demos interpretar una cadena de bits si conocemos su formato de represen-

tación. a

El empaquetamiento hexadecimal consiste en compactar informa-

ción binaria en cadenas de dígitos hexadecimales y permite tener una

representación más compacta de la información.

Cada dígito hexadecimal da lugara 4 bits. De este modo, el dígito hexadecimal 4 genera el grupo

de 4 bits 0100 y no el 100.

© FUOC • PID_00153515 86 Representación de la información numérica

Según la clave de interpretación, la misma cadena de bits codifica informacio-

nes distintas. Por ejemplo, la cadena de bits 001110101100 puede tener dife-

rentes interpretaciones:

1) Si se trata de un número natural, sabremos, si aplicamos el TFN, que:

001110101100(2 = 940(10

2) Si se trata de un número fraccionario en coma fija de 6 bits fraccionarios

sabremos, si aplicamos el TFN, que:

001110,101100(2 = 14,6875(10

3) Si se trata de un número en coma flotante normalizada donde hay 4 bits

para codificar el exponente y con bit implícito, sabremos que:

a) El primer bit codifica el signo. Por lo tanto, se trata de un número positivo.

b) Los 4 bits siguientes (0111) codifican el exponente. El 0111(2 es el 7(10. Si

asumimos que está en exceso a 23, el exponente es 7(10 − 23 (10 = −1(10.

c) El resto de los bits 0101100 codifican la mantisa normalizada. En este for-

mato, la mantisa es 1,0101100(2, que en decimal es 1,34375(10.

Con todo esto, podemos concluir que el número codificado por la cadena de

bits 001110101100 es:

1,34375(10 · 2−1 = 0,671875(10

3.2. Representación de la información alfanumérica

La representación alfanumérica se utiliza para describir información no numé-

rica. La función principal es la representación de la información textual, que

incluye letras, cifras y símbolos que agrupamos genéricamente con el nombre

de caracteres.

A la hora de establecer una correspondencia entre el carácter y una codifica-

ción, hay que utilizar criterios que faciliten el tratamiento de los datos, como

por ejemplo la asignación de códigos en orden creciente a las letras del alfabe-

to para permitir una ordenación alfabética fácil.

El número de caracteres que hay que representar puede ser relativamente gran-

de si consideramos el conjunto de símbolos que usamos de manera habitual:

mayúsculas, minúsculas, vocales acentuadas, símbolos de puntuación y mate-

máticos, etc.

© FUOC • PID_00153515 87 Representación de la información numérica

La codificación más extendida es el código ASCII. Este código tiene una ver-

sión básica de 128 símbolos que forma el estándar de facto que utilizan la ma-

yoría de los computadores, y una versión extendida, no tan estandarizada, que

incluye 128 símbolos más. En la versión extendida, se utilizan 8 bits para co-

dificar los 256 símbolos que incluye.

En la tabla siguiente, podemos ver la asignación del código ASCII. La represen-

tación numérica asociada a cada símbolo se obtiene a partir de sus coordena-

das. El índice de columna es el dígito decimal menos significativo, y el de fila,

el más significativo. Por ejemplo, el carácter alfanumérico 3 se representa por el

valor decimal 51(10 (5u, d1), que es en binario el 00110011(2.

Los primeros 31 códigos y el último no corresponden a símbolos del lenguaje

o caracteres visualizables (el carácter 32 –identificado como SP– representa el

espacio en blanco). Estos códigos son caracteres de control utilizados para dar

formato al texto o como comandos para los dispositivos periféricos (termina-

les alfanuméricos o gráficos, impresoras, etc.).

Como consecuencia del incremento del uso de la informática y de la portabili-

dad e interoperabilidad de los computadores para trabajar con distintas lenguas

simultáneamente, es cada vez más popular la extensión de la representación

ASCII de los caracteres alfanuméricos a 2 bytes, que utiliza el estándar denomi-

nado Unicode y que incluye los alfabetos del resto de los idiomas y grafías más

importantes. Hay que tener en cuenta esta propiedad a la hora de elaborar tex-

tos que deban ser utilizables globalmente, por ejemplo en Internet, ya que en

caso de utilizar versiones de un byte, se pueden ver alteradas sus características

particulares (acentos, etc.).

u

dd0 d1 d2 d3 d4 d5 d6 d7 d8 d9

0u NULL SOH STX ETX EOT ENQ ACK BEL BS HT

1u LF VT FF CR SO SI DLE DC1 DC2 DC3

2u DC4 NAK SYN ETB CAN EM SUB ESC FS GS

3u RS US SP ! “ # $ % & ‘

4u ( ) * + , - . / 0 1

5u 2 3 4 5 6 7 8 9 : ;

6u < = > ? @ A B C D E

7u F G H I J K L M N O

8u P Q R S T U V W X Y

9u Z [ \ ] ^ _ ` a b c

10u d e f g h i j k l m

11u n o p q r s t u v w

12u x y z { | } ~ DEL

ASCII es la sigla de la expresión inglesa American standard code for

information interchange.

Carácteres de controlno visualizables

Algunos caracteres de control no visualizables son: DEL (bo-rrar), ESC (escapada), HT (ta-bulador horizontal), LF (final de línea), CR (retorno a prime-ra columna), FF (final de pági-na), STX (inicio de texto) o ETX (final de texto).

El formato Unicode

El formato Unicode es estanda-rizado por la ISO/IEC, (Organización Internacional de Normalización / Comisión Electrotécnica Internacional o en inglés, International Orga-nization for Standardization / International Electrotechnical Commission) con el identifica-dor 10646.

© FUOC • PID_00153515 88 Representación de la información numérica

Los códigos ASCII correspondientes a los símbolos escritos (no a los caracteres

de control) se pueden construir fácilmente si añadimos 00h a la izquierda de

los códigos actuales expresados con 8 bits.

Operación sobre cadenas de caracteres ASCII

Queremos expresar la operación binaria que hay que hacer sobre un código ASCII paraconvertir una letra en mayúsculas en el equivalente en minúsculas.

De entrada, vemos que los códigos consecutivos a partir del código 65 siguen el ordende las letras del alfabeto inglés tanto para las mayúsculas como, a partir del código 97,para las minúsculas. Por lo tanto, la distancia entre símbolos de mayúsculas y minúsculases constante.

Fijémonos, por ejemplo, en las dos versiones de la primera letra del alfabeto. El carácter A tie-ne el código 65, mientras que el de a es 97. La diferencia es de 32(10, que en binario y 8 bitses 00100000. Por lo tanto, para transformar el código ASCII de una letra en mayúscula alcorrespondiente código ASCII de la misma letra en minúscula, deberemos restar 32(10, o loque es lo mismo, tenemos que restar 00100000(2 al código ASCII en binario.

3.3. Representación BCD

Nuestra aritmética cotidiana se desarrolla en base 10. De este modo, solemos

trabajar con números de la forma 104(10, 745(10 o 214(10. En diferentes aparta-

dos de este módulo, se describen maneras de representar estos números en

base 2. No se contempla en los sistemas que se presentan, sin embargo, la po-

sibilidad de mantener la estructura de esta representación; es decir, represen-

tar directamente los dígitos de la codificación decimal. Esta codificación debe

ser en binario, ya que dentro de los computadores sólo se utiliza la base 2.

Los dígitos decimales son 10, del 0 al 9. Para representar en binario estos diez dí-

gitos, se necesitan 4 bits. La siguiente tabla muestra la codificación para los dígitos

decimales en binario.

Las operaciones sobre caracteres se efectúan sobre agrupaciones de éstos

que se denominan cadenas de caracteres.

Dígito decimal Codificación binaria

0 0000

1 0001

2 0010

3 0011

4 0100

5 0101

6 0110

7 0111

8 1000

9 1001

El estándar Unicode

El almacenamiento de textos con formato Unicode está pre-sente en muchos de los proce-sadores de textos actuales como, por ejemplo, Wordpad de Windows.

© FUOC • PID_00153515 89 Representación de la información numérica

La siguiente figura muestra la manera en la que podemos representar un nú-

mero decimal si codificamos cada dígito de manera individual:

La codificación binaria dígito a dígito de los números decimales aprovecha

parcialmente la capacidad de representación. El código 1100, por ejemplo, no

se utiliza. De las dieciséis combinaciones posibles que se pueden hacer con 4

bits, sólo se utilizan diez. Consiguientemente, son necesarios más bits para re-

presentar un mismo número que si utilizáramos una representación binaria.

La conversión a este tipo de representación es habitual en dispositivos de sali-

da que tienen que servir para visualizar datos.

La codificación binaria dígito a dígito de los números decimales se conoce con

la sigla BCD (binary coded decimal).a

El hecho de que los dígitos estén codificados en binario individualmente no

cambia el hecho de que se trata de números decimales. Las operaciones de suma

y resta se desarrollarán como en el caso de base 10. De hecho, lo único que se

está haciendo en esta forma de representación es cambiar el símbolo que usa-

mos para designar un dígito decimal por un código binario que tiene la misma

función. Se puede entender como un cambio de la simbología para representar

los dígitos.

Actividades

52. Empaquetad en hexadecimal el número natural 10110001(2.

53. Empaquetad en hexadecimal el número 0100000111111010(2 que está en un formatode coma flotante normalizada de 16 bits, de los cuales 6 son de exponente y con bit im-plícito.

54. Codificad el número 1,125(10 en una representación binaria de coma fija sin signo de12 bits de los cuales 8 bits son fraccionarios, y después empaquetadlo en hexadecimal.

55. Desempaquetad la cadena de bits A83h e interpretadla sabiendo que es un númeronatural.

56. Desempaquetad la cadena de bits A83h e interpretadla sabiendo que es un númerode coma flotante normalizada de 12 bits y 4 bits para el exponente.

57. Desempaquetad la cadena de bits B5h e interpretadla sabiendo que es un número en-tero codificado en exceso a 10.

La representación BCD consiste en codificar en binario los dígitos de-

cimales de una representación de manera individual.

© FUOC • PID_00153515 90 Representación de la información numérica

58. Codificad en BCD el número 125(10.

59. Codificad en BCD el número 637(10.

60. Indicad qué número codifica la siguiente representación BCD: 00010011100.

61. Codificad el número 427(10 en BCD y en binario. Comparad el número de bits nece-sario en los dos casos.

© FUOC • PID_00153515 91 Representación de la información numérica

Resumen

En este módulo, se presenta un análisis de los sistemas de numeración posi-

cionales y se exponen las maneras de representar valores numéricos que es ha-

bitual utilizar dentro de los computadores. Los puntos principales que se

tratan en este módulo son:

• El TFN y los algoritmos de divisiones sucesivas y de multiplicaciones suce-

sivas que permiten cambiar entre bases distintas la representación de un

valor numérico.

• La representación de números naturales con representaciones posicionales

utilizando base 2 (binario), base 16 (hexadecimal) y base 10 (decimal), y

también las operaciones de suma y resta de números naturales.

• Las limitaciones derivadas de los condicionamientos físicos de los compu-

tadores y las características que presentan los distintos formatos de repre-

sentación (rango y precisión), y también el fenómeno de desbordamiento

y las técnicas de aproximación.

• La codificación de los números enteros a partir de las representaciones en

complemento a 2, signo y magnitud y exceso a M, y las operaciones de

suma y resta en cada una de estas codificaciones.

• La codificación de números fraccionarios con y sin signo en coma fija.

• La codificación de números en coma flotante.

• El empaquetamiento de información en hexadecimal y la codificación

en BCD.

© FUOC • PID_00153515 92 Representación de la información numérica

© FUOC • PID_00153515 93 Representación de la información numérica

Ejercicios de autoevaluación

1. Codificad en complemento a 2, signo y magnitud y exceso a 128 el número −10(10 utili-zando 8 bits.

2. Determinad el valor decimal que codifica la cadena de bits 00100100 en los siguientessupuestos:a) Si se trata de un número codificado en complemento a 2.b) Si se trata de un número codificado en signo y magnitud.c) Si se trata de un número codificado en exceso a 128(10.

3. Sumad en binario los números 111010101100(2 y 11100010010(2. Analizad el resultadoobtenido.

4. Codificad en un formato de coma fija de 8 bits donde 3 son fraccionarios y signo y mag-nitud el número +12,346(10. Si es necesario, utilizad una aproximación por truncamiento.

5. Codificad en un formato de coma flotante de 8 bits con mantisa de 3 bits normalizadade la forma 1,X con bit implícito, y exponente en exceso a M con M = 2q−1 (donde q es el nú-mero de bits del exponente), el número +12,346(10. Si es necesario, usad una aproximaciónpor truncamiento.

6. Codificad en una representación BCD el número 178(10.

7. Determinad el valor decimal que representa el código 378h, sabiendo que se trata de unnúmero en coma flotante de 12 bits con mantisa de 4 bits normalizada de la forma 1,X y bitimplícito, exponente en exceso a M con M = 2q−1 (donde q es el número de bits del exponente)y empaquetado en hexadecimal.

8. Codificad en un formato de 8 bits y complemento a 2 el número −45(10 y, posteriormen-te, empaquetadlo en hexadecimal.

9. Determinad el número mínimo de bits enteros y fraccionarios necesarios en coma fija ysigno y magnitud para codificar el número −35,25(10.

10. Codificad los números +12,25(10 y el +32,5(10 en un formato de coma fija y signo y mag-nitud de 9 bits de los cuales 2 son fraccionarios y sumadlos.

© FUOC • PID_00153515 94 Representación de la información numérica

Solucionario

Actividades

1.

a) 46(7 = 4 · 71 + 6 · 70 = 28 + 6 = 34(10

b) 3AD(16 = 3 · 162 + A · 161 + D · 160 = 3 · 162 + 10 · 161 + 13 · 160 = 941(10↑ ↑

Correspondencia del dígito A en base 10 Dígito D en base 10

c) 10011101(2 = 1 · 27 + 0 · 26 + 0 · 25 + 1 · 24 + 1 · 23 + 1 · 22 + 0 · 21 + 1 · 20 = = 128 + 16 + 8 + 4 + 1 = 157(10

d) 333(4 = 3 · 42 + 3 · 41 + 3 · 40 = 48 + 12 + 3 = 63(10

e) 333(8 = 3 · 82 + 3 · 81 + 3 · 80 = 192 + 24 + 3 = 219(10

f) B2,3(16 = B · 161 + 2 · 160 + 3 · 16−1 = 11 · 161 + 2 · 160 + 3 · 16−1 = = 176 + 2 + 0,1875 = 178,1875(10

g) 2232,02(4 = 2 · 43 + 2 · 42 + 3 · 41 + 2 · 40 + 0 · 4−1 + 2 · 4−2 = = 128 + 32 + 12 + 2 + 0 + 0,125 = 174,125(10

h) 2464,1(8 = 2 · 83 + 4 · 82 + 6 · 81 + 4 · 80 + 1 · 8−1 = 1024 + 256 + 48 + 4 + 0,125 = 1332,125(10

i) 1110100,01101(2 = 1 · 26 + 1 · 25 + 1 · 24 + 0 · 23 + 1 · 22 + 0 · 21 + 0 · 20 + 0 · 2−1 + 1 · 2−2 ++ 1 · 2−3 + 0 · 2−4 + 1 · 2−5 = 64 + 32 + 16 + 4 + 0,25 + 0,125 + 0,03125 = 116,40625(10

2.a) 3245(8 → X(10

3245(8 = 3 · 83 + 2 · 82 + 4 · 81 + 5 · 80 = 1536 + 128 + 32 + 5 = 1701(10

b) 425(10 → X(2Dividiremos el valor numérico 425 por 2 sucesivamente, y registraremos los restos de las di-visiones enteras. Estos restos constituyen los dígitos binarios:

Por lo tanto: 425(10 = 110101001(2

c) AC3C(16 → X(10

AC3C(16 = A · 163 + C · 162 + 3 · 161 + C · 160 = = 10 · 163 + 12 · 162 + 3 · 161 + 12 · 160 = = 40,960 + 3,072 + 48 + 12 = 44,092(10

d) 45367(10 → X(16Dividiremos el valor numérico 45367 por 16 sucesivamente, y registraremos los restos de lasdivisiones enteras hechas. Estos restos constituyen los dígitos hexadecimales:

Por lo tanto: 45367(10 = B137(16

425212106

5326136310

100101011

453672835

17711

0

73111

← restos

cocientes →

© FUOC • PID_00153515 95 Representación de la información numérica

e) 344(10 → X(2

Por lo tanto: 344(10 = 101011000(2

3.a) 111010011,1110100111(2 → X(16

Por lo tanto: 111010011,1110100111(2 = 1D3,E9C(16

b) 0,1101101(2 → X(16

Por lo tanto: 0,1101101(2 = 0,DA(16

c) 111011,1010010101(2 → X(16

Por lo tanto: 111011, 1010010101 (2 = 3B,A54(16

4. Como se puede ver, el valor numérico que en base 10 se representa por 74,3(10, con unarepresentación en base 2, 8 y 16 tiene un número infinito de dígitos fraccionarios. En todosestos casos, obtenemos una parte fraccionaria periódica.

5. Podemos aprovechar la propiedad de que 16 = 24 y 16 = 42 para tratar el paso de base 16 abase 2 y a base 4 dígito a dígito. Es decir, cada dígito hexadecimal se transformará en un con-junto de cuatro dígitos binarios, mientras que cada dígito hexadecimal se puede transformaren dos dígitos en base 4. El paso a base 8 no se puede hacer directamente desde base 16, dadoque 16 no es potencia de 8. Aprovecharemos la base 2 como base intermedia. 8 es potenciade 2 (8 = 23) y, por lo tanto, tenemos una correspondencia directa: cada agrupación de tresdígitos se corresponderá con un dígito octal.

a) ABCD(16 → X(2, X(4, X(8

344172

864321105210

000110101

Base 2 0001 1101 0011, 1110 1001 1100

Base 16 1 D 3, E 9 C

Base 2 0000 1101 1010

Base 16 0, D A

Base 2 0011 1011, 1010 0101 0100

Base 16 3 B, A 5 4

Binario Octal Hexadecimal Decimal

1101100,110 154,6 6C,C 108,75

11110010,010011 362,23 F2,4C 242,296875

10100001,00000011 241,006 A1,03 161,01171875

1001010,0100110011… 112,2314631463… 4A,4CCCCC… 74,3

Base 16 A B C D

Base 2 1010 1011 1100 1101

Base 4 22 23 30 31

© FUOC • PID_00153515 96 Representación de la información numérica

Por lo tanto: ABCD(16 = 1010101111001101(2 = 22233031(4 = 125715(8

b) 45,45(16 → X(2, X(4, X(8

Por lo tanto: 45,45(16 = 1000101,01000101(2 = 1011,1011(4 = 105,212(8

c) 96FF,FF(16 → X(2, X(4, X(8

Por lo tanto: 96FF,FF(16 = 1001011011111111,11111111(2 = 21123333,3333(4 = 113377,776(8

6.a) 4365,14(10 → X(2

• Parte fraccionaria • Parte entera

Por lo tanto, si 0,14 (10 = 0,001000111101…(2 y 4365(10 = 1000100001101(2, entonces:

4365,14(10 = 4365(10 + 0,14(10 = 1000100001101(2 + 0,001000111101…(2 = = 1000100001101,001000111101…(2

b) 234,2(5 → X(2

Pasamos a base 10:

234,2(5 = 2 · 52 + 3 · 51 + 4 · 50 + 2 · 5−1 = 50 + 15 + 4 + 0,4 = 69,4(10

A continuación, hacemos las operaciones pertinentes para pasar a base 2:

Base 2 0011 010 101 111 001 101

Base 8 1 2 5 7 1 5

Base 16 4 5, 4 5

Base 2 0100 0101, 0100 0101

Base 4 10 11, 10 11

Base 2 001 000 101, 010 001 010

Base 8 1 0 5, 2 1 2

Base 2 001 001 011 011 111 111, 111 111 110

Base 8 1 1 3 3 7 7, 7 7 6

Base 16 9 6 F F, F F

Base 2 1001 0110 1111 1111, 1111 1111

Base 4 21 12 33 33, 33 33

0,14 · 2 =0,28 · 2 =0,56 · 2 =0,12 · 2 =0,24 · 2 =0,48 · 2 =0,96 · 2 =0,92 · 2 =0,84 · 2 =0,68 · 2 =0,36 · 2 =0,72 · 2 =...

0,28 =0,56 =1,12 =0,24 =0,48 =0,96 =1,92 =1,84 =1,68 =1,36 =0,72 =1,44 =

001000111101

+ 0,28+ 0,56+ 0,12+ 0,24+ 0,48+ 0,96+ 0,92+ 0,84+ 0,68+ 0,36+ 0,72+ 0,44

4.3652.1821.091

545272136683417

84210

1011000010001

© FUOC • PID_00153515 97 Representación de la información numérica

• Parte fraccionaria • Parte entera

Por lo tanto, si 0,4 (10 = 0,01100110…(2 i 69(10 = 1000101(2, entonces:

234,2(5= 69,4(10 = 69(10 + 0,4(10 = 1000101(2 + 0,01100110…(2 = = 1000101,01100110…(2

c) 31,125(10 → X(2

• Parte fraccionaria • Parte entera

Por lo tanto, si 0,125 (10 = 0,001(2 y 31(10 = 11111(2, entonces: 31,125(10 = 11111,001(2

7.a) 10011001,1101(2 → X(10

10011001,1101(2 = 1 · 27 + 0 · 26 + 0 · 25 + 1 · 24 + 1 · 23 + 0 · 22 + 0 · 21 ++ 1 · 20 + 1 · 2−1 + 1 · 2−2 + 0 · 2−3 + 1 · 2−4 == 128 + 16 + 8 + 1 + 0,5 + 0,25 + 0,0625 = 153,8125(10

b) 110011,11(4 → X(10

110011,11(4 = 1 · 45 + 1 · 44 + 0 · 43 + 0 · 42 + 1 · 41 + 1 · 40 + 1 · 4−1 + 1 · 4−2 == 1.024 + 256 + 4 + 1 + 0,25 + 0,0625 == 1285,3125(10

c) 1010,11(8 → X(10

1010,11(8 = 1 · 83 + 0 · 82 + 1 · 81 + 0 · 80 + 1 · + 1 · 8−1 + 1 · 8−2 == 512 + 8 + 0,125 + 0,015625 == 520,140625(10

8.

0,4 · 2 =0,8 · 2 =0,6 · 2 =0,2 · 2 =0,4 · 2 =…

0,8 =1,6 =1,2 =0,4 =0,8 =

01100

+ 0,8+ 0,6+ 0,2+ 0,4+ 0,8

693417

84210

1010001

0,125 · 2 =0,25 · 2 =0,50 · 2 =

0,25 =0,50 =1,00 =

001

+ 0,25+ 0,50+ 0,00

31157310

11111

a. d.

1 1 1 1 1 ← transporte 1 1 1 0 1 1 0 1 0 (2

1 1 1 0 1 1 0 1 0 (2 1 1 ← transporte

+ 1 0 0 1 1 0 1 0 0 (2 − 1 0 0 1 1 0 1 0 0 (2

1 1 0 0 0 0 1 1 1 0 (2 0 1 0 1 0 0 1 1 0 (2

© FUOC • PID_00153515 98 Representación de la información numérica

9.

10. La multiplicación de un número por bk donde b es la base de numeración, equivale a des-plazar la coma fraccionaria k posiciones a la derecha.a) 128,7(10 · 104 = 128,7(10 · 10000(10 = 1287000(10b) AFD(16 · 162 = AFD(16 · 100(16 = AFD00(16c) 1101,01(2 · 2

2 = 1101,01(2 · 100(2 = 110101(2

11. La división de un número por bk donde b es la base de numeración equivale a desplazarla coma fraccionaria k posiciones a la izquierda.a) 52978(10 / 103 = 52978(10 / 1000(10 = 52,978(10

El cociente de la división entera es 52(10. El resto es 978(10.b) 3456(16 / 162 = 3456(16 / 100(16 = 34,56(16.

El cociente de la división entera es 34(16. El resto es 56(16.c) 100101001001(2 / 2

8 = 100101001001(2 / 100000000(2 = 1001,01001001(2El cociente de la división entera es 1001 (2. El resto es 01001001 (2.

b. e.

2 3 4 5 (8 2 3 4 5 (8

+ 3 2 1 (8 − 3 2 1 (8

2 6 6 6 (8 2 0 2 4 (8

c. f.

1 ← transporte A 2 3 F (16

A 2 3 F (16 1 1 ← transporte

+ 5 4 A 3 (16 − 5 4 A 3 (16

F 6 E 2 (16 4 D 9 C (16

a. b.

1 1 ← transporte 1 1 1 1 1 1 1 1 1 1 ← transporte

6 2, 4 8 (16 1 1 1 1 0 1 1 0 1, 1 1 0 1 1 (2

+ 3 5, D F (16 + 1 0 0 1 1 0 1 0 0, 1 1 1 (2

9 8, 2 7 (16 1 1 0 0 1 0 0 0 1 0, 1 0 1 1 1 (2

c. d.

6 2, 4 8 (16 1 1 1 1 0 1 1 0 1, 1 1 0 1 1 (2

1 1 1 ← transporte 1 1 1 1 1 ← transporte

− 3 5, D F (16 − 1 0 0 1 1 0 1 0 0, 1 1 1 (2

2 C, 6 9 (16 0 1 0 1 1 1 0 0 0, 1 1 1 1 1 (2

© FUOC • PID_00153515 99 Representación de la información numérica

12. Para escribir un número en notación científica, hay que identificar su mantisa, subase y su exponente. En este caso, podemos elegir la base 10 (base en la que está repre-sentado el número), podemos tomar como mantisa 12044,4 y el exponente 0. De este modo,una representación en notación científica del número +12044,4(10 es +12044,4(10 · 100. Algunasrepresentaciones en notación científica equivalentes para este número son +1204,44(10 · 101 o+120444(10 · 10−1, entre otras.

13. Puesto que la representación científica es de la forma ±R · be, donde R es la mantisa, b labase y e el exponente, podemos concluir que la mantisa es R = 3,143(10, la base es b = 10 y elexponente es e = 45(10.

14. Para sumar dos números en notación científica, debemos igualar sus exponentes. Comonorma, se suelen igualar al mayor exponente. El número con menor exponente se modificapara igualar el mayor exponente. En este caso, el mayor exponente es 5. Por lo tanto, trans-formamos el +123,34(10 · 103 :

+123,34(10 · 103 = +1,2334(10 · 105

Una vez los dos números tienen el mismo exponente, se puede hacer la operación de suma:

15. Para restar dos números en notación científica, tenemos que igualar sus exponentes. Comonorma general, se suele igualar al mayor exponente. El número con menor exponente se mo-difica para igualar el mayor exponente. En este caso, el mayor exponente es 5. Por lo tanto,transformamos el +1223,34(10 · 10−2:

+1223,34(10 · 10−2 = +0,000122334(10 · 105

Una vez los dos números tienen el mismo exponente, se puede hacer la operación de resta:

16. Dado que la base de numeración es 10, el rango de la representación del formatox1x0,x–1x–2x–3 es [0, 99,999(10]. La precisión de este formato es 0,001(10, porque ésta es ladistancia entre dos números consecutivos representables en este formato, como por ejem-plo el 12,121(10 y el 12,122(10. De una manera semejante, el rango de representación del for-mato x2x1x0,x–1x–2 es [0, 999,99(10], y su precisión es 0,01(10, la distancia entre dos númerosconsecutivos representables en el formato, como por ejemplo el 45,77(10 y el 45,78(10.

17. El número 925,4(10 no se puede representar en el formato x1x0,x–1x–2x–3, ya que éste nú-mero está fuera del intervalo de representación. En cambio, se puede representar en el for-mato x2x1x0,x–1x–2 puesto que está dentro del rango [0, 999,99(10].

18. Para escribir estos números en el formato indicado, hay que escribirlos con dos dígitosenteros y dos dígitos fraccionarios:a) 10(10 → 10,00(10b) 10,02(10 → 10,02(10c) 03,1(10 → 03,10(10 d) 03,2(10 → 03,20(10

19. La cantidad de números que se pueden representar en un determinado formato es bk don-de k es el número de dígitos disponibles en el formato y b la base de numeración. Puesto quese trata de un formato decimal, cada dígito puede tomar diez valores distintos (0-9), y dadoque el formato dispone de seis dígitos para la representación, podemos representar un totalde 106 números. Observemos que la cantidad de números que se pueden representar no de-pende de la posición de la coma.

1 1

+1 , 2334 (10 · 105

+ +67 , 89 (10 · 105

+69 , 1234 (10 · 105

+65 , 6789 (10 · 105

− +0 , 000122334 (10 · 105

+65 , 678777666 (10 · 105

1 1 1 1 1

© FUOC • PID_00153515 100 Representación de la información numérica

20.a) 22,345(10

El número 22,345(10 está directamente representado en el formato x2x1x0,x–1x–2. Por lo tan-to, se trata de un número representable y el error cometido es cero.

b) 45,89(10El número 45,89(10, es representable directamente en el formato x2x1x0,x–1x–2. La represen-tación es 045,89(10 y es exacta. Por lo tanto, el error de representación es cero.

c) 55,6356(10El número 55,6356(10 no se puede representar directamente en el formato x2x1x0,x–1x–2,dado que tiene cuatro dígitos fraccionarios. Deberemos hacer una aproximación, lo cualcomporta un cierto error de aproximación.Con una aproximación por truncamiento, la representación será 55,635(10. El error de re-presentación que se comete es ⏐55,6356(10 − 55,635(10⏐ = 0,0006(10.

d) 23,56(10El número 23,56(10, es representable directamente en el formato x2x1x0,x–1x–2. La represen-tación es 023,56(10 y es exacta. Por lo tanto, el error de representación es cero.

21. Para representar este número en hexadecimal, primero lo pasaremos a binario. La repre-sentación binaria de 16,25(10, es 10000,01(2.

Para la representación hexadecimal de este número, hay que añadir ceros a los extremos hastadisponer de grupos de 4 bits completos a lado y lado de la coma decimal. Entonces tenemos:

00010000,0100(2 = 10,4(16.

Por lo tanto, la representación hexadecimal que necesitamos es x1x0,x–1 donde x son dígitoshexadecimales:

El rango de esta representación es: [0 (00,0(16), 255,9375(10 (FF,F(16)].• La precisión es: 0,0625(10 = 00,1(16 − 00,0(16.

22. Para que en una representación decimal de cuatro dígitos sin signo se produzca desborda-miento, debemos sobrepasar el número 9999(10; por lo tanto, tendremos desbordamientocuando la suma de dos números sea 10000(10. Entonces, el menor número que debemos sumara 8341(10 es 10000(10 − 8341(10 = 1659(10.

23. Pasamos los valores numéricos a binario:

a. b. c.

+53(10 = +110101(2 − 25(10 = −11001(2 + 93(10 = +1011101(2

d. e. f.

−1(10 = −1(2 − 127(10 = −1111111(2 − 64(10 = −1000000(2

Para obtener la representación en signo y magnitud, sólo debemos poner el bit de signo yañadir la magnitud expresada en 7 bits:

5326136310

101011

25126310

10011

93462311

5210

1011101

10

1 127633115731

111111

643216

84210

000001

Base 10 Base 2 Signo y magnitud

+53(10 +110101(2 00110101(2

−25(10 −11001(2 10011001(2

+93(10 +1011101(2 01011101(2

−1(10 −1(2 10000001(2

−127(10 −1111111(2 11111111(2

−64(10 −1000000(2 11000000(2

© FUOC • PID_00153515 101 Representación de la información numérica

La representación en Ca2 de las magnitudes positivas coincide con la representación en sig-no y magnitud. La representación en Ca2 de las magnitudes negativas se puede obtener dedistintas maneras:i) Se puede hacer la operación 28 − ⏐X⏐ en base 10, y pasar posteriormente el resultado a bi-nario.ii) Podemos hacer la operación 28 − ⏐X⏐ directamente en base 2.iii) Se aplica un cambio de signo a la magnitud positiva en Ca2.

a) El +53(10 = +110101(2 se representa por 00110101(2 en Ca2.

b) Podemos obtener la representación en Ca2 del −25(10 de la siguiente manera:i) 28 − 25(10 = 256(10 − 25(10 = 231(10 = 11100111(2, o bien,ii) 28 − 25(10 = 100000000(2 − 11001(2 = 11100111(2, o bien,iii) +25(10 = +11001(2 → Representación de la magnitud positiva → 00011001(2 →

→ cambio de signo → 11100111(2

c) El +93(10 = +1011101(2 se representa por 01011101(2 en Ca2.

d) Obtenemos la representación en Ca2 del −1(10:i) 28 – 1 = 256(10 − 1(10 = 255(10 = 11111111(2, o bien,ii) 28 – 1 = 100000000(2 – 1(2 = 11111111(2, o bien,iii) +1(10 = +1(2 → Representación de la magnitud positiva → 00000001(2 →

→ Cambio de signo → 11111111(2

e) La representación en Ca2 del −127(10 se puede obtener:i) 28 – 127 = 256(10 – 127(10 = 129(10 = 10000001(2, o bien,ii) 28 – 127 = 100000000(2 – 1111111(2 = 10000001(2, o bien,iii) +127(10 = +1111111(2 → Representación de la magnitud positiva → 01111111(2 →

→ Cambio de signo → 10000001(2

f) La representación en Ca2 del −64(10 se obtiene:i) 28 – 64 = 256(10 – 64(10 = 192(10 = 11000000(2, o bien,

ii) 28 – 64 = 100000000(2 – 1000000(2 = 11000000(2, o bien,iii) +64(10 = +1000000(2 → Representación de la magnitud positiva → 01000000(2 →

→ Cambio de signo → 11000000(2

24. Si consideramos que son valores en signo y magnitud, tenemos:00110110(2 = +54(1011011010(2 = −90(1001110110(2 = +118(1011111111(2 = −127(1011100100(2 = −100(10

Si consideramos que son valores en complemento a 2:00110110(2 = +54(1011011010(2 = −27+ 90(10 = −38(1001110110(2 = +118(10 11111111(2 = −27 + 127(10 = −1(1011100100(2 = −27 + 100(10 = −28(10

27. Para hacer las operaciones de suma y resta en signo y magnitud, debemos tener en cuentael signo de las magnitudes y actuar consecuentemente. Para más claridad, al lado de la ope-

Decimal Binario Complemento a 2 Signo y magnitud

+53(10 +110101(2 00110101(2 00110101(2

−25(10 −11001(2 11100111(2 10011001(2

+93(10 +1011101(2 01011101(2 01011101(2

−1(10 −1(2 11111111(2 10000001(2

−127(10 −1111111(2 10000001(2 11111111(2

−64(10 −1000000(2 11000000(2 11000000(2

© FUOC • PID_00153515 102 Representación de la información numérica

ración en binario se ha hecho el equivalente en base 10. Los valores A, B y C en base 10 co-rresponden a:

A = 1100100111(2 = −295(10B = 1000011101(2 = −29(10C = 0101011011(2 = +347(10

• Suma A + B

A es negativo y B también. Por lo tanto, haremos la suma de las magnitudes (sin signo) y sino hay desbordamiento, añadiremos un 1 como bit de signo al resultado obtenido, para con-seguir el resultado en la representación en signo y magnitud:

• Resta A − B

A es negativo y B también. Por lo tanto, restaremos la magnitud pequeña (B) de la magnitudgrande (A) y aplicaremos el signo de la magnitud grande (A) al resultado (no se puede pro-ducir desbordamiento):

• Suma A + C

A es negativo y C es positivo. Por lo tanto, restaremos la magnitud pequeña (A) de la magni-tud grande (C) y aplicaremos el signo de la magnitud grande (C) al resultado (no se puedeproducir desbordamiento):

Suma A + B

1 1 1 1 1 1 ← transporte 1 1 ← transporte

1 0 0 1 0 0 1 1 1 (2 − 2 9 5 (10

+ 0 0 0 0 1 1 1 0 1 (2 + − 2 9 (10

1 0 1 0 0 0 1 0 0 (2 − 3 2 4 (10

A + B = 1101000100(2 = −324(10

Resta A − B

1 0 0 1 0 0 1 1 1 (2 − 2 9 5 (10

1 1 ← transporte 1 ← transporte

− 0 0 0 0 1 1 1 0 1 (2 − + 2 9 (10

1 0 0 0 0 1 0 1 0 (2 − 2 6 6 (10

A − B = 1100001010(2 = −266(10

Suma A + C

1 0 1 0 1 1 0 1 1 (2 + 3 4 7 (10

1 1 ← transporte 1 ← transporte

− 1 0 0 1 0 0 1 1 1 (2 + − 2 9 5 (10

0 0 0 1 1 0 1 0 0 (2 + 0 5 2 (10

A + C = 0000110100(2 = +52(10

© FUOC • PID_00153515 103 Representación de la información numérica

• Resta A − C

A es negativo y C es positivo. Por lo tanto, haremos la suma de las magnitudes (sin signo) y,si no hay desbordamiento, añadiremos un 1 como bit de signo al resultado obtenido, paraconseguir el resultado en la representación en signo y magnitud:

• Resta B − C

B es negativo y C es positivo. Por lo tanto, haremos la suma de las magnitudes (sin signo) y,si no hay desbordamiento, añadiremos un 1 como bit de signo al resultado obtenido, paraconseguir el resultado en la representación en signo y magnitud:

• Suma B + C

B es negativo y C es positivo. Por lo tanto, restaremos la magnitud pequeña (B) de la magni-tud grande (C) y aplicaremos el signo de la mayor magnitud (C) al resultado (no se puedeproducir desbordamiento):

Resta A − C

Desbordamiento

1 1 1 1 1 1 1 ← transporte 1 1 ← transporte

1 0 0 1 0 0 1 1 1 (2 − 2 9 5 (10

+ 1 0 1 0 1 1 0 1 1 (2 + − 3 4 7 (10

1 0 1 0 0 0 0 0 1 0 (2 − 6 4 2 (10

A − C = −642(10 No se puede representar con 10 bits en el formato de signo y magnitud.

Resta B − C

1 1 1 1 1 ← transporte 1 ← transporte

0 0 0 0 1 1 1 0 1 (2 − 2 9 (10

+ 1 0 1 0 1 1 0 1 1 (2 + − 3 4 7 (10

1 0 1 1 1 1 0 0 0 (2 − 3 7 6 (10

B − C = 1101111000(2 = –376(10

Suma B + C

1 0 1 0 1 1 0 1 1 (2 + 3 4 7 (10

1 1 1 1 ← transporte 1 ← transporte

− 0 0 0 0 1 1 1 0 1 (2 − +2 9 (10

1 0 0 1 1 1 1 1 0 (2 + 3 1 8 (10

B + C = 0100111110(2 = +318(10

© FUOC • PID_00153515 104 Representación de la información numérica

26. Para hacer las operaciones de suma Ca2, operaremos directamente sobre las representacio-nes. El resultado será correcto siempre que no se produzca desbordamiento. Para hacer las ope-raciones de resta, aplicaremos un cambio de signo al sustraendo y haremos una operación desuma:

A = 1100100111(2 = −217(10B = 1000011101(2 = −483(10C = 0101011011(2 = +347(10

• Suma A + B

Se produce desbordamiento, dado que al sumar dos números negativos obtenemos uno po-sitivo. El resultado no cabe en el formato de salida. Recordemos que el rango de representa-ción de enteros con 10 bits con el formato de complemento a 2 es [−210−1, 210−1 − 1] = [−512,511].

• Resta A − B

Aplicaremos un cambio de signo a B y haremos una operación de suma:

1000011101^ Se mantienen los bits hasta aquí (el primer 1 que encontramos, incluyendo éste)1

^ Se complementan los bits a partir de este punto 011110001

Al aplicar el cambio de signo al 1000011101, obtenemos el 0111100011, que será el valor queutilizaremos en la suma:

Suma A + B

Desbordamiento

1 1 1 1 1 1 1 1 1

1 1 0 0 1 0 0 1 1 1 (2 − 2 1 7 (10

+ 1 0 0 0 0 1 1 1 0 1 (2 + − 4 8 3 (10

1 0 1 0 1 0 0 0 1 0 0 (2 − 7 0 0 (10

A + B = −700(10

Suma A + (−B)

Transporte que se desprecia

1 1 1 1 1 1 1 1 ← transporte + 4 8 3 (10

1 1 0 0 1 0 0 1 1 1 (2 1 ← transporte

+ 0 1 1 1 1 0 0 0 1 1 (2 + − 2 1 7 (10

1 0 1 0 0 0 0 1 0 1 0 (2 + 2 6 6 (10

A − B = 0100001010 = +266(10

© FUOC • PID_00153515 105 Representación de la información numérica

• Suma A + C

A es negativo y C es positivo. No se puede producir desbordamiento:

• Resta A − C

Aplicaremos un cambio de signo a C y haremos una operación de suma:

Al aplicar un cambio de signo al 0101011011, obtenemos el 1010100101, que será el valorque utilizaremos en la suma:

Se produce desbordamiento, puesto que al sumar dos números negativos obtenemos uno po-sitivo. El resultado no cabe en el formato de salida. Recordemos que el rango de representaciónde enteros con 10 bits con el formato de complemento a 2 es [−210−1, 210−1 − 1] = [−512, 511].

• Resta B − C

Aplicaremos un cambio de signo a C y haremos una operación de suma. Al aplicar un cambiode signo al 0101011011 obtenemos el 1010100101, que será el valor que utilizaremos en lasuma:

Suma A + C

Transporte que se desprecia

1 1 1 1 1 1 1 1 1 ← transporte +3 4 7 (10

1 1 0 0 1 0 0 1 1 1 (2 1 ← transporte

+ 0 1 0 1 0 1 1 0 1 1 (2 + −2 1 7 (10

1 0 0 1 0 0 0 0 0 1 0 (2 +1 3 0 (10

A + C = 0010000010 = +130(10

0101011011 ← Valor numérico inicial1010100100 ← Complemento bit a bit de la expresión inicial

+ 1 ← Sumamos 1 al bit menos significativo del formato1010100101

Suma A + (−C)

Desbordamiento

1 1 1 1 1 ← transporte 1 ← transporte

1 1 0 0 1 0 0 1 1 1 (2 − 2 1 7 (10

+ 1 0 1 0 1 0 0 1 0 1 (2 + − 3 4 7 (10

1 0 1 1 1 0 0 1 1 0 0 (2 − 5 6 4 (10

A − C = −564(10

Suma B + (−C)

Desbordamiento

1 1 1 1 1 1 ← transporte 1 1 ← transporte

1 0 0 0 0 1 1 1 0 1 (2 − 4 8 3 (10

+ 1 0 1 0 1 0 0 1 0 1 (2 + − 3 4 7 (10

1 0 0 1 1 0 0 0 0 1 0 (2 − 8 3 0 (10

B − C = −830(10

© FUOC • PID_00153515 106 Representación de la información numérica

Se produce desbordamiento, dado que al sumar dos números negativos, obtenemos uno po-sitivo. El resultado no cabe en el formato de salida.

• Suma B + C

B es negativo y C es positivo. No se puede producir desbordamiento:

27. a) Si la cadena de bits 10110101 representa un número en Ca2 se trata de un número nega-tivo, ya que el primer bit es 1. Podemos hacer un cambio de signo para obtener la magnitudpositiva:

Para codificar el valor inicial en signo y magnitud, únicamente debemos cambiar el bit designo del valor conseguido con el cambio de signo. Por lo tanto, la codificación en signo ymagnitud del valor 10110101 que está en Ca2 es 11001011(2.

La codificación en 16 bits se puede obtener por extensión del formato, que en este caso seconsigue si añadimos unos necesarios a la izquierda del MSB:

11001011(2 = 1111111111001011(2

b) Si se trata de un número codificado en signo y magnitud, es un número negativo, ya queel primer dígito corresponde al signo y es 1. El resto de los dígitos codifican la magnitud enbinario. Podemos obtener la magnitud positiva si cambiamos el bit de signo: 00110101(2.

La representación de los valores positivos coincide en Ca2 y en signo y magnitud. Por lo tan-to, a partir de la magnitud positiva en Ca2 podemos conseguir la magnitud negativa en siaplicamos un cambio de signo:

Por lo tanto, la codificación en Ca2 del valor 10110101(2 que está en signo y magnitud es11001011(2.

Suma B + C

1 1 1 1 1 ← transporte 1 1 ← transporte

1 0 0 0 0 1 1 1 0 1 (2 − 4 8 3 (10

+ 0 1 0 1 0 1 1 0 1 1 (2 + + 3 4 7 (10

1 1 0 1 1 1 1 0 0 0 (2 − 1 3 6 (10

B + C = 1101111000 = −136(10

1 0 1 1 0 1 0 1 ← Valor numérico inicial

0 1 0 0 1 0 1 0 ← Complemento bit a bit de la expresión inicial

+ 1 ← Sumamos 1 al bit menos significativo del formato

0 1 0 0 1 0 1 1

0 0 1 1 0 1 0 1 ← Valor numérico inicial

1 1 0 0 1 0 1 0 ← Complemento bit a bit de la expresión inicial

+ 1 ← Sumamos 1 al bit menos significativo del formato

1 1 0 0 1 0 1 1

© FUOC • PID_00153515 107 Representación de la información numérica

La codificación en 16 bits se puede obtener por extensión del formato, que en este caso seconsigue copiando el bit de más peso a la izquierda de la codificación tantas veces como seanecesario:

11001011(2 = 1111111111001011(2

28. Para poder representar el intervalo [−25,50] en una representación en exceso será nece-sario elegir un desplazamiento que transforme este intervalo en un intervalo de números na-turales. La transformación del intervalo que se obtiene al sumar M es [−25 + M, 50 + M]. Paraque este intervalo sea un intervalo de los naturales, es necesario que −25 + M ≥ 0 y, por lotanto, el valor del exceso que permite representar este intervalo es M = 25.

29. a) Los números 3(10 y −8(10 se codifican en exceso a 7 y decimal de la manera siguiente:

3(10 + 7(10 = 10(10 · 3(10 codificado en exceso a 7(10 es 10(10.

−8(10 + 7(10 = −1(10 · −8(10 codificado en exceso a 7(10 es −1(10.

b) El número −4(10 se codifica en 6 bits y exceso a 7 de la manera siguiente:

−4(10 + 7(10 = 3(10. −4 codificado en exceso a 7 es 3(10 y codificado en base 2 es 000011(2.

c) Los números 3(10 y −6(10 se codifican en exceso a 4 de 8 bits:

3(10 + 4(10 = 7(10. 3 codificado en exceso a 4 es 7(10 y codificado en base 2 es 00000111(2.

−6(10 + 4(10 = −2(10. El resultado de la codificación es un número negativo. Por lo tanto, el nú-mero −6 no se puede codificar en exceso a 4.

30.Si aplicamos el TFN, obtenemos que 000000(2 = 0(10. Por lo tanto, el número que codifica es 0(10 − 31(10 = −31(10.Si aplicamos el TFN, obtenemos que 100000(2 = 32(10. Por lo tanto, el número que codifica es 32(10 − 31(10 = 1(10.Si aplicamos el TFN, obtenemos que 111111(2 = 63(10.Por lo tanto, el número que codifica es 63(10 − 31(10 = 32(10.

31. Sabemos que 25(10

= 100000(2. Este número marcará el 0 en la representación en exceso.Es decir, los números menores que éste representarán negativos y los mayores serán positivos(hay que darse cuenta de que los números menores, es decir, los negativos, empezarán con 0,mientras que los mayores, es decir, los positivos, empezarán con 1).El número 011100(2 es negativo.El número 100111(2 es positivo.El número 000000(2 es negativo.

32.

La suma de estos números en exceso a 25 es 000100(2 + 100100(2 = 001000(2 que es el −24(10

en exceso a 100000(2 ( = 32(10).

1 ← transporte

0 0 0 1 0 0 (2

+ 1 0 0 1 0 0 (2 se suman los 2 números

1 0 1 0 0 0 (2

1 0 1 0 0 0 (2

− 1 0 0 0 0 0 (2 restamos el exceso

0 0 1 0 0 0 (2

© FUOC • PID_00153515 108 Representación de la información numérica

33.

El resto de estos números en exceso a 25 es 000100(2 − 100100(2 = 000000(2 que es el –32(10en exceso a 100000(2 ( = 32(10).

34.

a)

La suma de estos números en exceso a 25 es 11000(2 + 00000(2 = 01000(2 = −24(10

b)

Podemos observar que el resultado de la suma no es correcto, ya que los dos números inicia-les son negativos, mientras que el resultado es positivo. Además, podemos detectar que el re-sultado es incorrecto porque hay desbordamiento en la última operación.

0 0 0 1 0 0 (2

1 ← transporte

− 1 0 0 1 0 0 (2 ← los dos números se restan

1 1 0 0 0 0 0 (2

1 1 ← transporte

1 1 0 0 0 0 0 (2 ← sumamos el exceso

+ 1 0 0 0 0 0 (2

1 0 0 0 0 0 0 0 (2

Exceso a 10000(2 Decimal

1 1 0 0 0 (2 (+8(10)

+ 0 0 0 0 0 (2 (−32(10)

1 1 0 0 0 (2

1 1 0 0 0 (2

− 1 0 0 0 0 (2

0 1 0 0 0 (2 (−24(10)

Exceso a 10000(2 Decimal

0 0 0 0 0 (2 (−32(10)

+ 0 0 0 0 0 (2 (−32(10)

0 0 0 0 0 (2

0 0 0 0 0 (2

1 ← transporte

− 1 0 0 0 0 (2

1 1 0 0 0 0 (2 (0(10)

© FUOC • PID_00153515 109 Representación de la información numérica

c)

La suma de estos números en exceso a 25 es 01000(2 + 11111(2 = 010111(2 = 7(10.

35.

a) Con este formato, el número binario que representa esta tira de bits es 101,0010(2, y al apli-car el TFN, se obtiene el número decimal que representa:

101,0010(2 = 1 · 22 + 0 · 21 + 1 · 20 + 0 · 2–1 + 0 · 2–2 + 1 · 2–3 + 0 · 2–4 == 22 + 20 + 2–3 == 4 + 1 + 0,125 == 5,125(10 =

b) En este caso, el número binario que representa esta tira de bits es 101001,0(2 , y al aplicarel TFN, se obtiene el número decimal que representa:

101001,0(2 = 1 · 25 + 0 · 24 + 1 · 23 + 0 · 22 + 0 · 21 + 1 · 20 + 0 · 2–1 == 25 + 23 + 20 == 32 + 8 + 1 == 41(10 =

36. Codificamos el número +12,85(10 en el formato especificado. Puesto que se trata de unnúmero positivo, el bit de signo es 0. En lo que respecta a la magnitud 12,85(10, primero pa-samos a binario la parte entera y, posteriormente, la parte fraccionaria. Para la parte entera,utilizamos el algoritmo de divisiones sucesivas por la base de llegada (2):

Así pues, 12(10 = 1100(2. En lo que respecta a la parte fraccionaria, hacemos multiplicacionessucesivas por la base de llegada (2):

Puesto que el formato especificado sólo tiene 3 bits para la parte fraccionaria, ya tenemos másbits de los necesarios y podemos detener el proceso aquí. Por lo tanto, 0,85(10 = 0,11011…(2.Para aproximar el valor con 3 bits y redondeo, procedemos como sigue:

0,11011(2 + 0,0001(2 = 0,11101(2 → truncamos 3 bits → 0,111(2

A continuación, juntamos la parte entera y la fraccionaria y obtenemos: 12,85(10 = 1100,111(2.Finalmente, para obtener la representación en el formato indicado, hay que añadir el bit de sig-no, de manera que la tira de bits que representa este número en el formato dado es: 01100,111(2.Hay que recordar que la tira de bits que se almacenaría en un computador no contiene la comani la especificación de la base: 01100111.

En los otros dos casos, procedemos de manera totalmente análoga.

+0,7578125(10:

• El bit de signo es 0, porque el número es positivo.

Exceso a 10000(2 Decimal

1← transporte

0 1 0 0 0 (2 (−8(10)

+ 1 1 1 1 1 (2 (+15(10)

1 0 0 1 1 1 (2

1 0 0 1 1 1 (2

1 ← transporte

− 1 0 0 0 0 (2

0 1 0 1 1 1 (2 (+7(10)

12 = 6 · 2 + 06 = 3 · 2 + 03 = 1 · 2 + 11 = 0 · 2 + 1

0,85 · 2 = 1,70 = 1 + 0,700,70 · 2 = 1,40 = 1 + 0,400,40 · 2 = 0,80 = 0 + 0,800,80 · 2 = 1,60 = 1 + 0,600,60 · 2 = 1,20 = 1 + 0,20

© FUOC • PID_00153515 110 Representación de la información numérica

• La parte entera es 0(10 = 0(2. Puesto que tenemos 4 bits para la parte entera, escribiremos0000(2.

• En lo que respecta a la parte fraccionaria:

De este modo, 0,7578125(10 = 0,11011…(2 que, si redondeamos con 3 bits:

0,11000(2 + 0,0001(2 = 0,11010(2 → truncamos 3 bits → 0,110(2

Finalmente, se juntan todas las partes y obtenemos 0,7578125(10 = 00000,110(2. Por lo tanto,la tira de bits que se almacenaría en un computador es 00000110.

−11,025(10:

• El bit de signo es 1, porque el número es negativo.• La parte entera es 11(10:

Es decir, 11(10 = 1011(2.

En lo que respecta a la parte fraccionaria:

De este modo, 0,025 (10 = 0,00000… (2 que, si redondeamos con 3 bits:

0,00000 (2 + 0,0001(2 = 0,00010(2 → truncamos 3 bits → 0,000(2

Finalmente, se juntan todas las partes y obtenemos –11,025(10 = 11011,000(2. Por lo tanto, latira de bits que se almacenaría en un computador es 11011000.

37. Para obtener la representación decimal de estas cadenas de bits, sólo hay que aplicar el TFNconsiderando que los tres últimos bits constituyen la parte fraccionaria y que el primer bit repre-senta el signo:

01001111→ +1001,111(2

+1001,111(2 = 1 · 23 + 0 · 22 + 0 · 21 + 1 · 20 + 1 · 2–1 + 1 · 2–2 + 1 · 2–3 == 23 + 20 + 2–1 + 2–2 + 2–3 == 8 + 1 + 0,5 + 0,25 + 0,125 == +9,875(10

11001111 → –1001,111(2

–1001,111(2 = –(1 · 23 + 0 · 22 + 0 · 21 + 1 · 20 + 1 · 2–1 + 1 · 2–2 + 1 · 2–3) == –(23 + 20 + 2–1 + 2–2 + 2–3 ) = –(8 + 1 + 0,5 + 0,25 + 0,125) == –9,875(10

01010100 → +1010,100(2

+1010,100(2 = 1 · 23 + 0 · 22 + 1 · 21 + 0 · 20 + 1 · 2–1 + 0 · 2–2 + 0 · 2–3 = 23 + 21 + 2–1 == 8 + 2 + 0,5 = +10,5(10

00000000 → +0000,000(2

+0000,000(2 = 0 · 23 + 0 · 22 + 0 · 21 + 0 · 20 + 0 · 2–1 + 0 · 2–2 + 0 · 2–3 == +0(10

10000000 → –0000,000(2

–0000,000(2 = – (0 · 23 + 0 · 22 + 0 · 21 + 0 · 20 + 0 · 2–1 + 0 · 2–2 + 0 · 2–3) == –0(10

0,7578125 · 2 = 1,515625 = 1 + 0,5156250,515625 · 2 = 1,03125 = 1 + 0,031250,03125 · 2 = 0,0625 = 0 + 0,06250,0625 · 2 = 0,125 = 0 + 0,1250,1250 · 2 = 0,25 = 0 + 0,25

11 = 5 · 2 + 15 = 2 · 2 + 12 = 1 · 2 + 01 = 0 · 2 + 1

0,025 · 2 = 0,05 = 0 + 0,050,05 · 2 = 0,1 = 0 + 0,10,1 · 2 = 0,2 = 0 + 0,20,2 · 2 = 0,4 = 0 + 0,40,4 · 2 = 0,8 = 0 + 0,8

© FUOC • PID_00153515 111 Representación de la información numérica

38. Para extender el rango de estas tiras de bits, hay que añadir ceros tanto a la izquierdacomo a la derecha de la magnitud, dado que se trata de magnitudes sin signo.

La representación original tiene 5 bits para la parte entera y la representación de llegada tiene 8.Por lo tanto, hay que añadir 8 – 5 = 3 bits a la izquierda de la magnitud. De la misma manera, larepresentación original tiene 3 bits para la parte fraccionaria, mientras que la representación dellegada tiene 4. Así pues, añadir 4 – 3 = 1 bit a la derecha de la magnitud:

00101010 → 00101,010 → 00000101,0100 → 00000101010011010010 → 11010,010 → 00011010,0100 → 00011010010010100010 → 10100,010 → 00010100,0100 → 000101000100

39. En este caso, hay que considerar que el primer bit representa el signo. La extensión de laparte entera implica insertándole tantos ceros como sea necesario. En este caso, pasamos de 4a 7 bits para la parte entera; por lo tanto, habrá que añadir 7 – 4 = 3 bits a la izquierda de laparte entera. En lo que respecta a la parte fraccionaria, la situación es idéntica en el ejercicioanterior. Así pues, habrá que añadir 4 – 3 = 1 bit a la derecha de la magnitud:

00101010 → 0101,010 → 0000101,0100 → 00000101010011010010 → 1010,010 → 0001010,0100 → 10001010010010100010 → 0100,010 → 0000100,0100 → 100001000100

40.

a) El rango de una representación fraccionaria con signo y magnitud es:

[–2n–m–1 + 2–m, +2n–m–1 – 2–m]

donde n es el número de bits utilizado en la representación y m el número de dígitos fraccio-narios. Por lo tanto, el rango en este caso se obtiene haciendo n = 8 y m = 3, es decir:

[–28–3–1 + 2–3, +28–3–1 – 2–3] = [–24 + 2–3, +24 – 2–3] = [–15,875(10, +15,875(10]

En lo que respecta a la precisión, es determinada por el bit de menos peso de la magnitud,concretamente 2–m = 2–3 = 0,125(10.

b) En este caso la situación es la misma que en el apartado anterior, pero con n = 8 y m = 4.El rango es el siguiente:

[–28–4–1 + 2–4, +28–4–1 – 2–4] = [–23 + 2–4, +23 – 2–4] = [–7,9375(10, +7,9375(10]

De manera análoga, la precisión es 2–m = 2–4 = 0,0625(10.

c) En coma fija sin signo, el rango de representación es determinado por:

[0, +2n–m – 2–m]

donde n es el número de bits utilizado en la representación, y m el número de dígitos frac-cionarios. Por lo tanto, el rango en este caso se obtiene haciendo n = 8 y m = 3, es decir:

[0, +28–3 – 2–3] = [0, +25 – 2–3] = [0, +31,875(10].

La precisión es la misma que en los casos anteriores, porque es independiente de si la repre-sentación es sin signo o en signo y magnitud. Por lo tanto, la precisión es 2–m = 2–3 = 0,125.

d) En este caso, la situación es la misma que en el apartado anterior, pero con n = 8 y m = 4.El rango es el siguiente:

[0, +28–4 – 2–4] = [0, +24 – 2–4] = [0, +15,9375(10].

De manera análoga, la precisión es 2–m = 2–4 = 0,0625(10.

41. Para determinar la precisión necesaria para representar el número +0,1875(10 de una ma-nera exacta, primero codificaremos este número en binario; haremos multiplicaciones suce-sivas por la base de llegada:

Entonces, 0,1875(10 = 0,0011(2. Así pues, para poder representar este número de una maneraexacta es necesario que la representación disponga, como mínimo, de cuatro dígitos fraccio-narios (m = 4), es decir, una precisión de la forma 2–m = 2-4 = 0,0625(10.

0,1875 · 2 = 0,375 = 0 + 0,3750,375 · 2 = 0,75 = 0 + 0,750,75 · 2 = 1,5 = 1 + 0,50,5 · 2 = 1 = 1 + 0

© FUOC • PID_00153515 112 Representación de la información numérica

42. En primer lugar, obtendremos la codificación en signo y magnitud de estos dos números:

a) +31,875(10:

• El bit de signo es 0, porque el número es positivo.• La parte entera es 31(10:

Es decir: 31(10 = 11111(2.

• En lo que respecta a la parte fraccionaria:

Así pues: 0,875 (10 = 0,111(2

• Finalmente, se juntan todas las partes y obtenemos +31,875(10 → 011111,111(2.

b) –16,21875(10

• El bit de signo es 1, porque el número es positivo.• La parte entera es 16(10:

Es decir, 16(10 = 10000(2.

• En lo que respecta a la parte fraccionaria:

Así pues: 0,21875 (10 = 0,00111(2

• Finalmente, se juntan todas las partes y obtenemos –16,21875(10 = 110000,00111.

Para representar exactamente los dos números, es necesario un formato que tenga:• Un bit de signo.• 5 bits para la parte entera (con 5 bits se pueden representar exactamente tanto 16(10 como

31(10).• 5 bits para la parte fraccionaria (con 5 bits se pueden representar exactamente tanto

0,875(10 como 0,21875(10).

Tenemos, por lo tanto, un formato de signo y magnitud con n = 11 (bit de signo, 5 bits departe entera y 5 bits de parte fraccionaria) y m = 5. Con estos datos, el rango es el siguiente:

[–2n–m–1 + 2–m, +2n–m–1 – 2–m] = [–211–5–1 + 2–5, +211–5–1 – 2–5] == [–25 + 2–5, +25 – 2–5] = [–31,96875(10, +31,96875(10]

La precisión es 2–m = 2–5 = 0,03125(10.

43.a) 00111000(2 → +0111,000(2 = 1 · 22 + 1 · 21 + 1 · 20 = 4 + 2 + 1 = +7(1010100000(2 → –0100,000(2 = –1 · 22 = –4(10

Para calcular la suma de estos dos números es necesario, primero, darse cuenta de que se tratade números de diferente signo. Por lo tanto, la suma se obtendrá restando la mayor magnitud(0111,000(2) de la menor (0100,000(2) y copiando el signo de la mayor magnitud (positivo):

31 = 15 · 2 + 115 = 7 · 2 + 1

7 = 3 · 2 + 13 = 1 · 2 + 11 = 0 · 2 + 1

0,875 · 2 = 1,75 = 1 + 0,750,75 · 2 = 1,5 = 1 + 0,50,5 · 2 = 1 = 1 + 0

16 = 8 · 2 + 08 = 4 · 2 + 04 = 2 · 2 + 02 = 1 · 2 + 01 = 0 · 2 + 1

0,21875 · 2 = 0,4375 = 0 + 0,43750,4375 · 2 = 0,875 = 0 + 0,8750,875 · 2 = 1,75 = 1 + 0,750,75 · 2 = 1,5 = 1 + 0,50,5 · 2 = 1 = 1 + 0

0 1 1 1 , 0 0 0 (2

0 0 0 0 0 ← transportes

− 0 1 0 0 , 0 0 0 (2

0 0 1 1 , 0 0 0 (2 ← resultado

© FUOC • PID_00153515 113 Representación de la información numérica

Por lo tanto:

00111000(2 + 10100000(2 +0111,000(2 + (–0100,000(2) = +0011,000(2 → 00011000(2.

Si convertimos el resultado a base 10:

+0011,000(2 = 1 · 21 + 1 · 20 = 2 + 1 = 3(10

Que demuestra que el resultado es correcto, ya que +7(10 + (–4(10) = 3(10.

Para calcular la resta será necesario hacer la suma de las magnitudes, porque el número10100000(2 es negativo. El resultado de la resta será positivo (porque a un número positivole restamos uno negativo):

Por lo tanto:

00111000(2 – 10100000(2 → +0111,000(2 – (–0100,000(2) = +1011,000(2 = 01011000(2

De nuevo, podemos comprobar que el resultado obtenido es correcto si lo convertimos a base 10:

+1011,000(2 = 23 + 21 + 20 = 8 + 2 + 1 = +11(10 = +7(10 – (–4(10)

b)10111010(2 → –0111,010(2 = –(22 + 21 + 20 + 2–2) = –(4 + 2 + 1 + 0,25) = –7,25(1011101100(2 → –1101,100(2 = – (23 + 22 + 20 + 2–1) = –(8 + 4 + 1 + 0,5) = –13,5(10

En este caso se trata de dos números negativos, dado que el primer dígito, que indica el signo, esun 1 en los dos casos. Para hacer la suma, se deberá sumar las magnitudes y copiar el bit signo:

Observad que se ha producido transporte en el último bit y, por lo tanto, puesto que estamos su-mando sólo las magnitudes, hay desbordamiento. Esto quiere decir que el resultado de la sumano es representable con 8 bits de los cuales 3 son fraccionarios.

Si dispusiéramos de un bit más para la parte entera (un formato de 9 bits con 3 fraccionarios),el resultado sí que sería representable:

–10100,110(2 → 110100110.

Efectivamente, comprobamos que:

–10100,110(2 = –(24 + 22 + 2–1 + 2–2) = –(16 + 4 + 0,5 + 0,25) = –20,75(10 = –7,25(10 + (–13,5(10).

En lo que respecta al resto, hay que darse cuenta de que el sustraendo (–1101,100(2) es mayoren magnitud que el minuendo (–0111,010(2). Así pues, haremos la resta de las magnitudescomo 1101,100(2 – 0111,010(2 y el resultado debe ser positivo:

1 0 0 0 0 0 ← transportes

0 1 1 1 , 0 0 0 (2

+ 0 1 0 0 , 0 0 0 (2

1 0 1 1 , 0 0 0 (2 ← resultado

1 1 1 0 0 0 ← transportes

0 1 1 1 , 0 1 0 (2

+ 1 1 0 1 , 1 0 0 (2

1 0 1 0 0 , 1 1 0 (2 ← resultado

1 1 0 1 , 1 0 0 (2

1 1 0 0 1 0 ← transportes

− 0 1 1 1 , 0 1 0 (2

0 1 1 0 , 0 1 0 (2 ← Resultado

© FUOC • PID_00153515 114 Representación de la información numérica

Por lo tanto:

10111,010(2 = – 11101100(2 = –0111,010(2 – (–1101100(2) = +0110,010(2 → 0110010(2.

De nuevo, podemos comprobar que el resultado obtenido es correcto si lo convertimos a base 10:

+0110,010(2 = 22 + 21 + 2–2 = 4 + 2 + 0,25 = +6,25(10 = –7,25(10 – (–13,5(10) = –7,25(10 + 13,5(10.

44.a) En primer lugar, hay que identificar los diferentes elementos que componen este formato:

• Bit de signo S = 1. Por lo tanto, se trata de un número negativo.

• Exponente. Puesto que la mantisa es de 4 bits, quedan 3 bits (111(2) para el exponente (q = 3).Por lo tanto, el exceso será M = 2q–1 = 22 = 4(10. Entonces, el exponente vale: e = 111(2 – 4(10 == (22 + 21 + 20) – 4 = (4 + 2 + 1) – 4 = 7 – 4 = 3(10.

• Finalmente, los cuatro bits que quedan forman la mantisa que, puesto que está normali-zada en la forma 1,X con bit implícito, toma el valor R = 1,0010(2.

Ahora ya podemos calcular el número representado en base 10 aplicando la fórmula ±R · 2e

y el TFN:

–1,0010(2 · 23 = –(20 + 2–3) · 23 = –(23 + 20) = –(8 + 1) = –9(10.

b) En este caso, procedemos de manera totalmente análoga a la del apartado anterior:

• Bit de signo s = 0. Por lo tanto, se trata de un número positivo.

• Exponente. Dado que la mantisa es de 3 bits, quedan 4 bits (1010(2) para el exponente (q = 4).Por lo tanto, el exceso será M = 2q–1 = 23 = 8(10. Entonces, el exponente vale e = 1010(2 – 8(10 == (23 + 21) – 8 = (8 + 2) – 8 = 10 – 8 = 2(10.

• Finalmente, los cuatro bits que quedan forman la mantisa que, puesto que está normali-zada en la forma 1,X con bit implícito, toma el valor R = 1,011(2.

Ahora ya podemos calcular el número representado en base 10 aplicando la fórmula ±R · 2e

y el TFN:

+1,011(2 · 22 = +(20 + 2–2 + 2–3) · 22 = +(22 + 20 + 2–1) = +(4 + 1 + 0,5) = +5,5(10.

45.a) El formato especificado tiene la forma dada por la siguiente tabla:

En primer lugar, codificaremos la magnitud 1,335(10 en base 2:

• La parte entera es 1(10:

Es decir, 1(10 = 1(2.

• En lo que respecta a la parte fraccionaria:

Signo (S) Exponente (e) Mantisa

1 111 0010

Signo (S) Exponente (e) Mantisa

0 1010 011

Signo (S) Exponente (e) Mantisa

1 bit 4 bits 3 bits

1 = 0 · 2 + 1

0,335 · 2 = 0,67 = 0 + 0,670,67 · 2 = 1,34 = 1 + 0,340,34 · 2 = 0,68 = 0 + 0,680,68 · 2 = 1,36 = 1 + 0,360,36 · 2 = 0,72 = 0 + 0,720,72 · 2 = 1,44 = 1 + 0,44

© FUOC • PID_00153515 115 Representación de la información numérica

Así pues, 0,355(10 = 0,010101…(2 y nos detenemos, porque ya tenemos bastantes más bits delos que permite representar este formato.

• Ahora, se juntan las dos partes de la magnitud y obtenemos 1,335(10 = 1,010101(2.

• A continuación, normalizamos la expresión obtenida (añadiendo la información del sig-no) en la forma ±R · 2e: +1,335(10 = +1,010101(2 · 2

0.

• Finalmente, obtenemos los diferentes elementos que definen la representación.– Signo: se trata de un número negativo. Por lo tanto, el bit de signo será un 1.– Exponente: el exponente es 0(10, que hay que codificar en exceso a M = 2q–1. Puesto

que disponemos de 4 bits, el exceso es M = 23 = 8. Por lo tanto, hay que representar0(10 + 8(10 = 8(10 con 4 bits:

Es decir, e = 8(10 = 1000(2 (en exceso a 8).– Mantisa: R = 1,010101(2. Puesto que hay bit implícito (1,X), sólo es necesario repre-

sentar la parte derecha de la coma y disponemos de 3 bits (con truncamiento). Asípues, la mantisa serán los tres bits a partir de la coma: 010.

– Ahora ya podemos juntar todas las partes:

Es decir, la representación es 11000010.

b) La única diferencia con el apartado anterior es el cálculo de la mantisa, porque ahora hayque redondear en lugar de truncar. Tal y como se indica más arriba, tenemos R = 1,010101(2.Para redondearlo con tres bits, hay que sumarle la mitad de la precisión y truncar su resultado:

1,010101(2 + 0,0001(2 = 1,011001(2 → truncamos 3 bits → 1,011(2

Por lo tanto, la representación será la siguiente:

Es decir, la secuencia bits de la representación es 11000011.

c) El formato especificado tiene la forma dada por la siguiente tabla:

En primer lugar, codificaremos la magnitud 10,0327(10 en base 2:

• La parte entera es 10(10:

Es decir, 10(10 = 1010(2.

• En lo que respecta a la parte fraccionaria:

8 = 4 · 2 + 04 = 2 · 2 + 02 = 1 · 2 + 01 = 0 · 2 + 1

Signo (S) Exponente (e) Mantisa

1 1000 010

Signo (s) Exponente (e) Mantisa

1 1000 011

Signo (S) Exponente (e) Mantisa

1 bit 5 bits 3 bits

10 = 5 · 2 + 05 = 2 · 2 + 12 = 1 · 2 + 01 = 0 · 2 + 1

0,0327 · 2 = 0,0654 = 0 + 0,06540,0654 · 2 = 0,1308 = 0 + 0,13080,1308 · 2 = 0,2616 = 0 + 0,26160,2616 · 2 = 0,5232 = 0 + 0,52320,5232 · 2 = 1,0464 = 1 + 0,04640,0464 · 2 = 0,0928 = 0 + 0,0928

© FUOC • PID_00153515 116 Representación de la información numérica

Así pues, 0,0327(10 = 0,000010...(2 y nos detenemos, porque ya tenemos bastantes más bitsde los que permite representar este formato.

• Ahora, se juntan las dos partes de la magnitud y obtenemos 10,0327(10 = 1010,000010(2.

• A continuación, normalizamos la expresión obtenida (añadiendo la información del sig-no) en la forma ±R · 2e: +10,0327(10 = +1,010000010(2 · 2

3.

• Finalmente, obtenemos los diferentes elementos que definen la representación:– Signo: se trata de un número positivo. De esta manera, el bit de signo será un 0.– Exponente: el exponente es 3(10, que hay que codificar en exceso a M = 2q–1. Puesto

que disponemos de 5 bits, el exceso es M = 24 = 16. Por lo tanto, hay que representar3(10 + 16(10 = 19(10 con 4 bits:

Es decir, e = 19(10 = 10011(2 (en exceso a 16).

– Mantisa: R = 1,010000010(2. Puesto que hay bit implícito (1,X), sólo es necesario re-presentar la parte derecha de la coma y disponemos de 3 bits (con truncamiento). Deeste modo, la mantisa serán los tres bits a partir de la coma: 010.

– Ahora ya podemos juntar todas las partes:

Es decir, la representación es 010011010.

d) De nuevo, la única diferencia con el apartado anterior es el cálculo de la mantisa, porqueahora hay que redondear en lugar de truncar. Tal y como se indica más arriba, tenemos R =1,010000010(2. Para redondearlo con tres bits, hay que sumarle la mitad de la precisión ytruncar su resultado:

1,010000010(2 + 0,0001(2 = 1,010100010(2 truncamos 3 bits 1,010(2

Por lo tanto, la representación será la siguiente:

Es decir, se obtiene la misma secuencia de bits que en el caso de truncamiento: 010011010.

e) El formato especificado tiene la forma dada por la siguiente tabla:

• En primer lugar, codificaremos la magnitud 2 · 103(10 = 2000(10 en base 2:

Es decir, 2000(10 = 11111010000(2.

• A continuación, normalizamos la expresión obtenida (añadiendo la información del sig-no) en la forma ±R · 2e: –2000(10 = –1,1111010000(2 · 2

10.

19 = 9 · 2 + 19 = 4 · 2 + 14 = 2 · 2 + 02 = 1 · 2 + 01 = 0 · 2 + 1

Signo (S) Exponente (e) Mantisa

0 10011 010

Signo (S) Exponente (e) Mantisa

0 10011 010

Signo (S) Exponente (e) Mantisa

1 bit 3 bits 4 bits

2000 = 1000 · 2 + 01000 = 500 · 2 + 0500 = 250 · 2 + 0250 = 125 · 2 + 0125 = 62 · 2 + 1

62 = 31 · 2 + 031 = 15 · 2 + 115 = 7 · 2 + 17 = 3 · 2 + 13 = 1 · 2 + 11 = 0 · 2 + 1

© FUOC • PID_00153515 117 Representación de la información numérica

• Finalmente, obtenemos los diferentes elementos que definen la representación.– Signo: se trata de un número negativo. Por lo tanto, el bit de signo será un 1.– Exponente: el exponente es 10(10 que hay que codificar en exceso a M = 2q–1. Puesto

que disponemos de 3 bits, el exceso es M = 22 = 4. Por lo tanto, hay que representar10(10 + 4(10 = 14(10 con 3 bits. Ahora bien, el rango de representación de números na-turales con 3 bits es [0, 23 – 1] = [0(10, 7(10] . Por lo tanto, el exponente obtenido(14(10) no se puede representar en el formato dado. Se produce desbordamiento enel exponente.

f) El formato especificado tiene la forma dada por la tabla siguiente:

En primer lugar, codificaremos la magnitud 10 · 103(10 = 10000(10 en base 2:

Es decir, 10000(10 = 10011100010000(2.

• A continuación, normalizamos la expresión obtenida (añadiendo la información del sig-no) en la forma ±R · 2e: +10000(10 = +1,00111000100002 · 2

13.

• Finalmente, obtenemos los diferentes elementos que definen la representación.– Signo: se trata de un número positivo; por lo tanto, el bit de signo será un 0.– Exponente: el exponente es 13(10, que hay que codificar en exceso a M = 2q–1. Puesto que

disponemos de 4 bits, el exceso es M = 23 = 8. Por lo tanto, hay que representar 13(10 +8(10 = 21(10 con 4 bits. Ahora bien, el rango de representación de números naturales con4 bits es [0, 24 – 1] = [0(10, 15(10]. Por lo tanto, el exponente obtenido (21(10) no se puederepresentar en el formato dado. Se produce desbordamiento en el exponente.

g) El formato especificado tiene la forma dada por la siguiente tabla:

En primer lugar, codificaremos la magnitud 2 · 10−6(10 = 0,000002(10 en base 2:

Es decir, 0,000002(10 = 0,0000000000000000001000…(2.

Signo (S) Exponente (e) Mantisa

1 bit 4 bits 3 bits

10000 = 5000 · 2 + 05000 = 2500 · 2 + 02500 = 1250 · 2 + 01250 = 625 · 2 + 0625 = 312 · 2 + 1312 = 156 · 2 + 0156 = 78 · 2 + 0

78 = 39 · 2 + 039 = 19 · 2 + 119 = 9 · 2 + 19 = 4 · 2 + 14 = 2 · 2 + 02 = 1 · 2 + 01 = 0 · 2 + 1

Signo (S) Exponente (e) Mantisa

1 bit 3 bits 4 bits

0,000002 · 2 = 0,000004 = 0 + 0,0000040,000004 · 2 = 0,000008 = 0 + 0,0000080,000008 · 2 = 0,000016 = 0 + 0,0000160,000016 · 2 = 0,000032 = 0 + 0,0000320,000032 · 2 = 0,000064 = 0 + 0,0000640,000064 · 2 = 0,000128 = 0 + 0,0001280,000128 · 2 = 0,000256 = 0 + 0,0002560,000256 · 2 = 0,000512 = 0 + 0,0005120,000512 · 2 = 0,001024 = 0 + 0,0010240,001024 · 2 = 0,002048 = 0 + 0,0020480,002048 · 2 = 0,004096 = 0 + 0,0040960,004096 · 2 = 0,008192 = 0 + 0,0081920,008192 · 2 = 0,016384 = 0 + 0,0163840,016384 · 2 = 0,032768 = 0 + 0,0327680,032768 · 2 = 0,065536 = 0 + 0,0655360,065536 · 2 = 0,131072 = 0 + 0,1310720,131072 · 2 = 0,262144 = 0 + 0,2621440,262144 · 2 = 0,524288 = 0 + 0,5242880,524288 · 2 = 1,048576 = 1 + 0,0485760,048576 · 2 = 0,097152 = 0 + 0,0971520,097152 · 2 = 0,194304 = 0 + 0,1943040,194304 · 2 = 0,388608 = 0 + 0,3886080,388608 · 2 = 0,777216 = 0 + 0,777216

© FUOC • PID_00153515 118 Representación de la información numérica

• A continuación, normalizamos la expresión obtenida (añadiendo la información del sig-no) en la forma ±R · 2e: +0,000002(10 = +1,00002 · 2

–19 .

• Finalmente, obtenemos los diferentes elementos que definen la representación.– Signo: se trata de un número positivo, por lo tanto, el bit de signo será un 0.– Exponente: el exponente es –19(10, que hay que codificar en exceso a M = 2q–1. Dado que

disponemos de 3 bits, el exceso es M = 22 = 4. Por lo tanto, se debe representar –19(10 +4(10 = –15(10 con 3 bits. Ahora bien, el rango de representación de números naturales con3 bits es [0, 23 – 1] = [0(10, 7(10] . Así pues, el exponente obtenido (–19(10) no se puederepresentar en el formato dado. Se produce desbordamiento a cero del exponente.

Hay que tener presente que, en la práctica, muchos formatos de coma flotante (como porejemplo el estándar IEEE754) introducen codificaciones reservadas para el número 0. En estecaso, cuando se produce desbordamiento a cero del exponente, se acostumbra a aproximarel valor que se quiere representar para la codificación reservada al 0. También se puede elegirla representación del menor número positivo o del mayor número negativo representable (sialguna de estas opciones produce un error menor que el que se comete al aproximar por 0).En este ejercicio, sin embargo, al no haber una codificación reservada para el 0, el númeroestá fuera del rango y, por lo tanto, no es representable en el formato especificado.

h) El formato especificado tiene la forma dada por la tabla siguiente:

En primer lugar, codificaremos la magnitud 0,0001233(10 en base 2:

Es decir, 0,0001233(10 = 0,0000000000001000…(2.

• A continuación, normalizamos la expresión obtenida (añadiendo la información del sig-no) en la forma ±R · 2e: –0,0001233(10 = –1,00002 · 2

–13 .

• Finalmente, obtenemos los diferentes elementos que definen la representación.– Signo: se trata de un número negativo; por lo tanto, el bit de signo será un 1.– Exponente: el exponente es –13(10, que hay que codificar en exceso a M = 2q–1. Puesto

que disponemos de 4 bits, el exceso es M = 23 = 8. Por lo tanto, hay que representar –13(10 + 8(10 = –5(10 con 3 bits. Ahora bien, el rango de representación de números natu-rales con 4 bits es [0, 24 – 1] = [0(10, 15(10] . De este modo, el exponente obtenido (–13(10)no se puede representar en el formato dado. Se produce desbordamiento a cero delexponente.

Los mismos comentarios del apartado anterior se aplican también en este ejercicio.

46.a) El número representado es el 1,010(2 · 2

0. En esta situación, el próximo número represen-table es el 1,011(2 · 2

0 y, por lo tanto, la precisión es la diferencia entre los dos números:0,001(2 · 2

0 = 2–3 = 0,125(10. Esta expresión responde a la fórmula 2–k · 2e que tenéis en elsubapartado 2.4.2 de este módulo.

El error de representación es la distancia entre el número representado y el número que queríamosrepresentar. El número representado es 1,010(2 · 2

0 = (1 · 20 + 1 · 2–2) · 20 = (1 + 0,25) · 1 = 1,25(10,y el número que se quería representar es 1,335(10. Por lo tanto, el error cometido en la repre-sentación es ⏐1,335(10 − 1,25(10⏐ = 0,085(10.

b) El número representado es el 1,011(2 · 20. Al aplicar la fórmula 2–k · 2e se obtiene que la

precisión es 2−3 · 20 = 2−3 = 0,125(10.

Signo (S) Exponente (e) Mantisa

1 bit 4 bits 3 bits

0,0001233 · 2 = 0,0002466 = 0 + 0,00024660,0002466 · 2 = 0,0004932 = 0 + 0,00049320,0004932 · 2 = 0,0009864 = 0 + 0,00098640,0009864 · 2 = 0,0019728 = 0 + 0,00197280,0019728 · 2 = 0,0039456 = 0 + 0,00394560,0039456 · 2 = 0,0078912 = 0 + 0,00789120,0078912 · 2 = 0,0157824 = 0 + 0,01578240,0157824 · 2 = 0,0315648 = 0 + 0,03156480,0315648 · 2 = 0,0631296 = 0 + 0,06312960,0631296 · 2 = 0,1262592 = 0 + 0,12625920,1262592 · 2 = 0,2525184 = 0 + 0,25251840,2525184 · 2 = 0,5050368 = 0 + 0,50503680,5050368 · 2 = 1,0100736 = 1 + 0,01007360,0100736 · 2 = 0,0201472 = 0 + 0,02014720,0201472 · 2 = 0,0402944 = 0 + 0,04029440,0402944 · 2 = 0,0805888 = 0 + 0,08058880,0805888 · 2 = 0,1611776 = 0 + 0,1611776

© FUOC • PID_00153515 119 Representación de la información numérica

El error de representación es la distancia entre el número representado y el número que que-ríamos representar. El número representado es 1,011(2 · 20 = (1 · 20 + 1 · 2–2 + 1 · 2–3) · 20 == (1 + 0,25 + 0,125) · 1 = 1,375(10, y el número que se quería representar es 1,335(10. Por lotanto, el error cometido en la representación es ⏐1,335(10 − 1,375(10⏐ = 0,040(10. Se puedecomprobar que el error obtenido con redondeo es menor que el obtenido con truncamiento(apartado anterior).

c) El número representado es el 1,010(2 · 23. Al aplicar la fórmula 2–k · 2e se obtiene que la

precisión es 2–3 · 23= 20 = 1(10.

El error de representación es la distancia entre el número representado y el número que que-ríamos representar. El número representado es 1,010(2 · 2

3 = (1 · 20 + 1 · 2–2) · 23 = 23 + 21 = 8+ 2 = 10(10, y el número que se quería representar es 10,0327(10. Por lo tanto, el error cometidoen la representación es ⏐10,0327(10 − 10(10⏐ = 0,0327(10.

d) El resultado obtenido con redondeo es el mismo que el obtenido con truncamiento. Porlo tanto, la solución dada en el apartado anterior también es válida para este apartado.

e) Puesto que el número no es representable en el formato dado, no se puede calcular ni laprecisión ni el error de representación.

f) Puesto que el número no es representable en el formato dado, no se puede calcular ni laprecisión ni el error de representación.

g) Puesto que el número no es representable en el formato dado, no se puede calcular ni laprecisión ni el error de representación.

h) Puesto que el número no es representable en el formato dado, no se puede calcular ni laprecisión ni el error de representación.

47.a) El formato especificado tiene la forma dada por la siguiente tabla:

El número mayor que se puede representar es aquel que tiene signo positivo (0) y el resto delos bits a 1:

El número representado es el siguiente:

• Exponente: el exceso será M = 2q–1 = 24 = 16(10. Entonces, el exponente vale e = 11111(2 –– 16(10 = (24 + 23 + 22 + 21 + 20) – 16 = (16 + 8 + 4 + 2 + 1) – 16 = 31 – 16 = 15(10.

• La mantisa está normalizada en la forma 1,X con bit implícito y toma el valor R = 1,1111111111(2 = 20 + 2–1 + ... + 2–10 = 21 – 2–10 = 2 – 2–10.

• Por tanto, el mayor número que se puede representar es (2 – 2–10) · 215 = 215 – 25 = 65536 – 32 == +65504(10.

b) El formato especificado tiene la forma dada por la siguiente tabla:

El mayor número que se puede representar es aquel que tiene signo positivo (0) y el resto delos bits a 1:

El número representado es el siguiente:

• Exponente: el exceso será M = 2q–1 = 25 = 32(10. Entonces, el exponente vale e = 111111(2 – 32(10 == (25 + 24 + 23 + 22 + 21 + 20) – 32 = (32 + 16 + 8 + 4 + 2 + 1) – 32 = 63 – 32 = 31(10.

Signo (S) Exponente (e) Mantisa

1 bit 5 bits 10 bits

Signo (S) Exponente (e) Mantisa

0 11111 1111111111

Signo (S) Exponente (e) Mantisa

1 bit 6 bits 3 bits

Signo (S) Exponente (e) Mantisa

0 111111 111

© FUOC • PID_00153515 120 Representación de la información numérica

• La mantisa está normalizada en la forma 1,X con bit implícito y toma el valor R = 1,111 (2 == 20 + 2–1 + 2–2 + 2–3 = 21 – 2–3 = 2 – 2–3.

• Por lo tanto, el mayor número que se puede representar es (2 – 2–3) · 231 = 232 – 228 == 4294967296 – 268435456 = +4026531840(10 = +4,026531840(10 · 109.

48. El formato especificado tiene la forma dada por la siguiente tabla:

Y sabemos que el rango de representación de los formatos de coma flotante es el siguiente:

[–(2 – 2–k) · 2M–1, –2–M ] ∪ [+2–M, +(2 – 2–k) · 2M–1]

Hay que comprobar que el número 2,89(10 · 1010 no pasa del límite superior de los númerospositivos representables. Por lo tanto, tenemos que evaluar el número (2 – 2–k) · 2M–1 y com-probar a qué valor decimal corresponde. Para esto, es necesario determinar los valores de k yM. Puesto que tenemos un formato con 10 bits de mantisa normalizada en la forma 1,X y bitimplícito, k (el número de bits de la parte fraccionaria) es igual a 10. Por otro lado, el excesode la representación del exponente es M = 2q–1 y q = 5 (el número de bits del exponente). Porlo tanto, M = 24 = 16(10. Así pues:

(2 – 2–k) · 2M–1 = (2 – 2–10) · 216–1 = (2 – 2–10) · 215 = (216 – 25) = 65536 – 32 = 65504(10.

Dado que 2,89(10 · 1010 > 65504(10 podemos concluir que este número no es representableen el formato dado.

49. El formato específico tiene la forma dada por la tabla siguiente:

Y sabemos que el rango de representación de los formatos de coma flotante es el siguiente:

[–(2 – 2–k) · 2M–1, –2–M ] ∪ [+2–M, +(2 – 2–k) · 2M–1]

Es necesario comprobar que el número –1256(10 · 10–2 = –12,56(10 está dentro del rango de losnúmeros negativos representables, es decir, [–(2 – 2–k) · 2M–1, –2–M ]. Por este motivo, hay quedeterminar los valores de k y M. Puesto que tenemos un formato con 3 bits de mantisa nor-malizada en la forma 1,X y bit implícito, k (el número de bits de la parte fraccionaria) es iguala 3. Por otro lado, el exceso de la representación del exponente es M = 2q–1 y q = 6 (el númerode bits del exponente). Por lo tanto, M = 25 = 32(10. Así pues:

–2–M = –2–32 ≈ –2,328306437(10 · 10–10 –(2 – 2–k) · 2M–1 = –(2 – 2–3) · 232–1 = –(2 – 2–3) · 231 = –(232 – 228) =

= –4294967296 + 268435456 = –4026531840(10 = –4,026531840(10 · 109

Por lo tanto, dado que –12,56(10 ∈ [–2,328306437(10 · 10–10, –4,026531840(10 · 109], hay quecomprobar si éste es uno de los números representables de este formato en este intervalo.Para hacerlo, calculamos la representación de este valor en el formato especificado en elenunciado. En primer lugar, codificaremos la magnitud 12,5(10 en base 2.

• La parte entera es 12(10:

Es decir, 12(10 = 1100(2.

• Por lo que respecta a la parte fraccionaria:

Signo (S) Exponente (e) Mantisa

1 bit 5 bits 10 bits

Signo (s) Exponente (e) Mantisa

1 bit 6 bits 3 bits

12631

====

6 · 23 · 21 · 20 · 2

++++

0011

0,560,120,240,480,960,92

· 2· 2· 2· 2· 2· 2

======

1,120,240,480,961,921,84

======

1 + 0,120 + 0,240 + 0,480 + 0,961 + 0,921 + 0,84

© FUOC • PID_00153515 121 Representación de la información numérica

Así pues, 0,56(10 = 0,100011...(2 y nos detenemos porque ya tenemos muchos más bits de losque permite representar este formato.

• Ahora, se juntan las dos partes de la magnitud y obtenemos 12,56(10 ≈ 1100,100011(2.

• Seguidamente, normalizamos la expresión obtenida (añadiendo la información del signo)en la forma ±R · 2e: –12,56(10 ≈ –1,100100011(2 · 2

3.

• Finalmente, obtenemos los diferentes elementos que definen la representación:– Signo: se trata de un número negativo, por lo tanto, el bit de signo será un 1.– Exponente: El exponente es 3(10 que hay que codificar en exceso a M = 2q–1. Dado que dis-

ponemos de 6 bits, el exceso es M = 25 = 32. Por lo tanto, hay que representar 3(10 + 32(10= 35(10 con 6 bits:

Es decir e = 35(10 = 100011(2 (en exceso a 32).

– Mantisa: R = 1,100100011(2. Como hay bit implícito (1,X), sólo hay que representar la par-te de la derecha de la coma y disponemos de 3 bits (con truncamiento). Así, la mantisaserán los tres bits a partir de la coma: 100.

– Ahora ya podemos juntar todas las partes:

Es decir, la representación es 1100011100.

Al haber tenido que truncar la mantisa, podemos concluir que el número –12,56(10 no se pue-de representar en el formato dado, sino que hay que aproximarlo (en este caso, la aproxima-ción se ha hecho por el truncamiento).

50.a) El formato especificado tiene la forma dada por la tabla siguiente:

Y sabemos que el rango de representación de los formatos de coma flotante es el siguiente:

[–(2 – 2–k) · 2M–1, –2–M ] ∪ [+2–M, +(2 – 2–k) · 2M–1]

Dado que tenemos un formato con 10 bits de mantisa normalizada en la forma 1,X y bit im-plícito, k (el número de bits de la parte fraccionaria) es igual a 10. Por otro lado, el exceso dela representación del exponente es M = 2q–1 y q = 5 (el número de bits del exponente). Por lotanto, M = 24 = 16(10. Así pues:

2–M = 2–16 = 1,52587890625(10 · 10–5

(2 – 2–k) · 2M–1 = (2 – 2–10) · 216–1 = (2 – 2–10) · 215 = (216 – 25) = 65536 – 32 = 65504(10

Por lo tanto, el rango de representación es el siguiente:

[–65504(10, –1,52587890625(10 · 10–5] ∪ [+1,52587890625(10 · 10–5, 65504(10]

b) El formato especificado tiene la forma dada por la tabla siguiente:

Y sabemos que el rango de representación de los formatos de coma flotante es el siguiente:

[–(2 – 2–k) · 2M–1, –2–M ] ∪ [+2–M, +(2 – 2–k) · 2M–1]

35178421

======

1784210

· · · · · ·

222222

++++++

110001

Signo (S) Exponente (e) Mantisa

1 100011 100

Signo (S) Exponente (e) Mantisa

1 bit 5 bits 10 bits

Signo (S) Exponente (e) Mantisa

1 bit 6 bits 3 bits

© FUOC • PID_00153515 122 Representación de la información numérica

Puesto que tenemos un formato con 3 bits de mantisa normalizada en la forma 1,X y bit im-plícito, k (el número de bits de la parte fraccionaria) es igual a 3. Por otro lado, el exceso dela representación del exponente es M = 2q–1 y q = 6 (el número de bits del exponente), y porlo tanto, M = 25 = 32(10. Así pues:

2–M = 2–32 ≈ 2,328306437(10 · 10–10

(2 – 2–k) · 2M–1 = (2 – 2–3) · 232–1 = (2 – 2–3) · 231 = (232 – 228) = 4294967296 – 268435456 = =4026531840(10 = 4,026531840(10 · 109

Por lo tanto, el rango de representación es el siguiente:

[–4,026531840(10 · 109, –2,328306437(10 · 10–10]

[+2,328306437(10 · 10–10, +4,026531840(10 · 109]

51.a) 00110010 + 00110101

Primero descodificaremos los dos números. Empezamos por 00110010. En primer lugar, hayque identificar los distintos elementos que componen este formato.

• Bit de signo S = 0, por lo tanto, se trata de un número positivo.• Exponente: tenemos q = 5 (5 bits para el exponente). Por lo tanto, el exceso será M = 2q–1 =

= 24 = 16(10. Entonces, el exponente vale e = 01100(2 – 16(10 = (23 + 22) – 16 = (8 + 4) – 16 == 12 – 16 = –4(10.

• Finalmente, los dos bits que quedan forman la mantisa que, puesto que está normalizadaen la forma 1,X con bit implícito, toma el valor R = 1,10(2.

• Por lo tanto, se trata del número +1,10(2 · 2–4.

En lo que respecta al segundo sumando, tenemos lo siguiente:

• Bit de signo S = 0, por lo tanto, se trata de un número positivo.• Exponente: el exponente vale e = 01101(2 – 16(10 = (23 + 22 + 20) – 16 = (8 + 4 +1) – 16 =

= 13 – 16 =–3(10.• Finalmente, los dos bits que quedan forman la mantisa que, puesto que está normalizada

en la forma 1,X con bit implícito, toma el valor R = 1,01(2.• Por lo tanto, se trata del número +1,01(2 · 2

–3.

Así pues, hay que hacer la suma 1,10(2 · 2–4 + 1,01(2 · 2

–3. En primer lugar, es necesario igualarlos exponentes al mayor de los dos (–3):

1,10(2 · 2–4 → 0,110(2 · 2

–3

Ahora ya se puede proceder a calcular la suma:

El resultado es +10,000(2 · 2–3, que hay que normalizar en la forma ±1,X · 2e: +1,0000(2 · 2

–2 yrepresentar en el formato especificado en el enunciado:

• Bit de signo S = 0, porque se trata de un número positivo.

Signo (S) Exponente (e) Mantisa

0 01100 10

Signo (S) Exponente (e) Mantisa

0 01101 01

1 1 1 ← transportes

0 , 1 1 0 (2 2–3

+ 1 , 0 1 0 (2 2–3

1 1 , 0 0 0 (2 2–3 ← resultado

© FUOC • PID_00153515 123 Representación de la información numérica

• El exponente vale –2(10 que, expresado en exceso a 16(10, es e = –2(10 + 16(10 = 14(10. Pararepresentarlo en base 2 aplicamos el método de las divisiones sucesivas:

Es decir, el exponente es 1110(2 y, para completar los 5 bits, hay que añadir un cero a la iz-quierda: 01110(2.

• En lo que respecta a la mantisa, tenemos R = 1,1000(2. Puesto que hay bit implícito (1,X),sólo es necesario representar la parte de la derecha de la coma y disponemos de 2 bits (contruncamiento, porque el enunciado no especifica lo contrario). Así pues, la mantisa seránlos dos primeros bits a partir de la coma: 10.

• Al juntar todas las partes, se obtiene la siguiente representación:

Es decir, en la representación dada 00110010 + 00110101 = 01111000.

b) 10100101 + 10100100

Procedemos como en el apartado anterior y descodificaremos los dos números. Empezamospor 10100101. En primer lugar, hay que identificar los diferentes elementos que componeneste formato.

• Bit de signo S = 1; por lo tanto, se trata de un número negativo.• Exponente: e = 01001(2 – 16(10 = (23 + 20) – 16 = (8 + 1) – 16 = 9 – 16 = –7(10.• Finalmente, los dos bits que quedan forman la mantisa que, puesto que está normalizada

en la forma 1,X con bit implícito, toma el valor R = 1,01(2.• Por lo tanto, se trata del número –1,01(2 · 2

–7.

En lo que respecta al segundo sumando, tenemos lo siguiente:

• Bit de signo S = 1; por lo tanto, se trata de un número negativo.• Exponente: e = 01001(2 – 16(10 = (23 + 20) – 16 = (8 + 1) – 16 = 9 – 16 = –7(10.• Finalmente, los dos bits que quedan forman la mantisa que, puesto que está normalizada

en la forma 1,X con bit implícito, toma el valor R = 1,00(2.• Por lo tanto, se trata del número –1,00(2 · 2

–7.

Así pues, hay que hacer la suma –1,01(2 · 2–7 + (–1,00(2 · 2

–7). Dado que los exponentes soniguales, se puede proceder a hacer la suma directamente:

El resultado es –10,01(2 · 2–7, que hay que normalizar en la forma ±1,X · 2e: –1,001(2 · 2

–6 yrepresentar en el formato especificado en el enunciado:

• Bit de signo S = 1, porque se trata de un número negativo.

14 = 7 · 2 + 07 = 3 · 2 + 13 = 1 · 2 + 11 = 0 · 2 + 1

Signo (S) Exponente (e) Mantisa

0 01110 10

Signo (s) Exponente (e) Mantisa

1 01001 01

Signo (S) Exponente (e) Mantisa

1 01001 00

1 ← transportes

− 1 , 0 1 (2 · 2–7

+ − 1 , 0 0 (2 · 2–7

− 1 0 , 0 1 (2 · 2–7 ← resultado

© FUOC • PID_00153515 124 Representación de la información numérica

• El exponente vale –6(10 que, expresado en exceso a 16(10, es e = –6(10 + 16(10 = 10(10. Pararepresentarlo en base 2, aplicamos el método de las divisiones sucesivas:

Es decir, el exponente es 1010(2 y, para completar los 5 bits, hay que añadir un cero a laizquierda: 01010(2.

• En lo que respecta a la mantisa, tenemos R = 1,001(2. Puesto que hay bit implícito (1,X),sólo se debe representar la parte de la derecha de la coma y disponemos de 2 bits (con trun-camiento, porque el enunciado no especifica lo contrario). Así pues, la mantisa será losprimeros dos bits a partir de la coma: 00.

• Al juntar todas las partes, se obtiene la representación siguiente:

Es decir, en la representación dada 10100101 + 10100100 = 10101000.

c) 11110010 + 10111011

Aplicamos el mismo método que en los apartados anteriores. Empezamos por descodificar11110010. En primer lugar, hay que identificar los diferentes elementos que componen esteformato:

• Bit de signo S = 1; por lo tanto, se trata de un número negativo.• El exponente vale e = 11100(2 – 16(10 = (24 + 23 + 22) – 16 = (16 + 8 + 4) – 16 = 12(10.• Finalmente, los dos bits que quedan forman la mantisa que, puesto que está normalizada

en la forma 1,X con bit implícito, toma el valor R = 1,10(2.• Por lo tanto, se trata del número –1,10(2 · 2

12.

En lo que respecta al segundo sumando, tenemos lo siguiente:

• Bit de signo S = 1; por lo tanto, se trata de un número negativo.• Exponente: el exponente vale e = 01110(2 – 16(10 = (23 + 22 + 21) – 16 = (8 + 4 + 2) – 16 =

14 – 16 = –2(10.• Finalmente, los dos bits que quedan forman la mantisa que, dado que está normalizada

en la forma 1,X con bit implícito, toma el valor R = 1,11(2.• Por lo tanto, se trata del número –1,11(2 · 2

–2.

Así pues, hay que hacer la suma –1,10(2 · 212 + (–1,11(2 · 2

–2). En primer lugar, es necesarioigualar los exponentes al mayor de los dos (12):

1,11(2 · 2–2 = 0,0111(2 · 2

0 = 0,0000000000000111(2 · 212

Ahora ya se puede proceder a calcular la suma:

El resultado es –1,1000000000000111(2 · 212, que ya está normalizado en la forma ±1,X · 2e y

hay que representarlo en el formato especificado en el enunciado:

• Bit de signo S = 1, porque se trata de un número negativo.

10 = 5 · 2 + 05 = 2 · 2 + 12 = 1 · 2 + 01 = 0 · 2 + 1

Signo (S) Exponente (e) Mantisa

1 01010 00

Signo (S) Exponente (e) Mantisa

1 11100 10

Signo (S) Exponente (e) Mantisa

1 01110 11

← transportes

– 1 , 1 0 212

+ – 0 , 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 (2 212

– 1 , 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 (2 212← resultado

© FUOC • PID_00153515 125 Representación de la información numérica

• El exponente vale 12(10 que, expresado en exceso a 16(10, es e = 12(10 + 16(10 = 28(10 == 11100(2. Dado que se trata del mismo valor que teníamos para el primer sumando, nohay que aplicar el método de divisiones sucesivas, sino que tenemos directamente la re-presentación en base 2.

• En lo que respecta a la mantisa, tenemos R = 1,1000000000000111(2. Dado que hay bit im-plícito (1,X), sólo es necesario representar la parte de la derecha de la coma y disponemosde 2 bits (con truncamiento, porque el enunciado no especifica lo contrario). Así pues, lamantisa serán los dos primeros bits a partir de la coma: 10.

• Al juntar todas las partes, se obtiene la siguiente representación:

Es decir, en la representación dada 11110010 + 10111011 = 111110010. Observemos que elresultado de la suma es idéntico al primer sumando. Esto es habitual en formatos de comaflotante cuando uno de los dos sumandos tiene una magnitud mucho mayor que el otro.

52. Para empaquetar, sólo hay que agrupar los bits de 4 en 4 y hacer su cambio de base ahexadecimal. En este caso, tenemos los grupos 1011 | 0001:

1011(2 = B(160001(2 = 1(16

Ahora, agrupamos todos estos dígitos en una única cadena y obtenemos 10110001(2 → B1h.

53. Procedemos de manera análoga al ejercicio anterior, agrupando los bits de 4 en 4: 0100 |0001 | 1111 | 1010 y haciendo el cambio de base de cada grupo:

0100(2 = 4(160001(2 = 1(161111(2 = F(161010(2 = A(16

Ahora, agrupamos todos estos dígitos en una sola cadena y obtenemos 0100000111111010(2→→ 41FAh.

Observad que no hemos hecho un cambio de base del número fraccionario representado porla cadena de bits original, sino que hemos empaquetado los bits de una manera en la queresulta más cómodo trabajar.

54. En primer lugar, codificaremos el número 1,125(10 en base 2:

• La parte entera es 1(10 = 1(2:

• En lo que respecta a la parte fraccionaria:

Así pues, 0,125(10 = 0,001(2.

• Ahora, se juntan las dos partes de la magnitud y obtenemos 1,125(10 = 1,001(2 que, represen-tado con 8 bits para la parte fraccionaria y 4 para la parte entera, es 1,001(2 =0001,00100000(2 (hemos añadido tres ceros a la izquierda de la parte entera y cinco cerosa la derecha de la parte fraccionaria). Así pues, en el formato especificado en el enunciadotenemos la secuencia de bits 000100100000(2.

Para empaquetarla en hexadecimal, hay que agrupar los bits de 4 en 4: 0001 | 0010 | 0000 yhacer el cambio de base para cada grupo:

0001(2 = 1(160010(2 = 2(160000(2 = 0(16

Ahora, agrupamos todos estos dígitos en una única cadena y obtenemos 000100100000(2 →→ 120h.

De nuevo, hay que comentar que no hemos hecho un cambio de base, porque claramente1,125(10 ≠ 120(16.

Signo (S) Exponente (e) Mantisa

1 11100 10

1 = 0 · 2 + 1

0,125 · 2 = 0,25 = 0 + 0,250,25 · 2 = 0,5 = 0 + 0,5

0,5 · 2 = 1,0 = 1 + 0

© FUOC • PID_00153515 126 Representación de la información numérica

55. En primer lugar, tomamos cada uno de los dígitos que forman la cadena y obtenemos sucodificación binaria:

A(16 = 1010(28(16 = 1000(23(16 = 0011(2

56. A continuación, montamos una sola cadena de bits juntando los tres grupos obteni-dos: A83h 101010000011(2. Si interpretan esta cadena de bits como un número natural, po-demos calcular su valor decimal aplicando el TFN: 101010000011(2 = 211 + 29 + 27 + 21 + 20 =2048 + + 512 + 128 + 2 + 1 = 2691(10.

57. Del ejercicio anterior, ya sabemos que A83h → 101010000011(2. Si interpretan esta cade-na de bits como un número de coma flotante de 12 bits, con la mantisa normalizada de laforma 1,X, bit implícito y 4 bits para el exponente, tenemos lo siguiente:

Por lo tanto, podemos obtener el valor decimal como sigue.

• Bit de signo S = 1; por lo tanto, se trata de un número negativo.• Exponente: tenemos 4 bits para el exponente (q = 4). Por lo tanto, el exceso será M = 2q–1

= 23 = 8(10. Entonces, el exponente vale e = 0101(2 – 8(10 = (22 + 20) – 8 = (4 + 1) – 8 = 5 – 8= –3(10.

• Finalmente, los 7 bits que quedan forman la mantisa que, puesto que está normalizada enla forma 1,X con bit implícito, toma el valor R = 1,0000011(2.

Ahora ya podemos calcular el número representado en base 10 aplicando la fórmula ±R ·2e y el TFN:

–1,0000011(2 · 2–3 = –(20 + 2–6 + 2–7) · 2–3 = –(2–3 + 2–9 + 2–10) = –0,1279296875(10.

57. En primer lugar, tomamos cada uno de los dígitos que forman la cadena y obtenemos sucodificación binaria:

B(16 = 1011(25(16 = 0101(2

A continuación, montamos una única cadena de bits juntando los dos grupos obtenidos:B5h→ 10110101(2. Si interpretamos esta cadena como un número entero codificado en ex-ceso a 10(10, tenemos que 10110101(2 = X + 10(10; por lo tanto:

X = 10110101(2 – 10(10 = (27 + 25 + 24 + 22 + 20) – 10 = (128 + 32 + 16 + 4 + 1) – 10 == 181 – 10 = 171(10.

Es decir, la cadena representa el número 171(10.

58. En primer lugar, codificamos en binario con 4 bits cada uno de los dígitos del número:

1(10 = 0001(22(10 = 0010(25(10 = 0101(2

Y finalmente, formamos una única tira con todos los bits 000100100101(2.

59. Como en el apartado anterior, en primer lugar codificamos en binario con cuatro bitscada uno de los dígitos del número:

6(10 = 0110(23(10 = 0011(27(10 = 0111(2

Y finalmente, formamos una única tira con todos los bits 011000110111(2.

60. Separamos la tira de bits en grupos de 4 y comprobamos qué número decimal represen-tan. Tenemos 000100111000(2 → 0001 | 0011 | 1000; por lo tanto:

0001(2 = 1(100011(2 = 3(101000(2 = 8(10

Y finalmente, construimos el número decimal juntando los dígitos decimales: 138(10.

Signo (S) Exponente (e) Mantisa

1 0101 0000011

© FUOC • PID_00153515 127 Representación de la información numérica

61. Para codificar 427(10 en BCD, primero codificamos en binario con 4 bits cada uno de losdígitos del número:

4(10 = 0100(22(10 = 0010(27(10 = 0111(2

Y por último, formamos una sola tira con todos los bits 010000100111(2.

Para codificar el mismo número en binario, es necesario aplicar el método de las divisionessucesivas por la base de llegada (2):

Por lo tanto, 427(10 = 110101011(2.

En el caso de la codificación BCD, se necesitan 12 bits para representar el número 427(10. Encambio, la codificación binaria sólo necesita 9.

Ejercicios de autoevaluación

1. Para codificar el −10(10, aplicaremos primero el procedimiento de divisiones sucesivas parapasar a base 2 el módulo del número (10).

Por lo tanto, 10(10 = 1010(2.

Si ahora queremos codificar el −10(10, lo que haremos será aplicar la operación de comple-mento sobre el módulo con los 8 bits de la representación final:

Por lo tanto, −10(10 codificado en complemento a 2 y 8 bits es 11110110(2.

Para conseguir la codificación en signo y magnitud, sólo hay que codificar el signo (1, ya quees negativo) y añadir la magnitud representada en 7 bits. De esta manera, el número −10(10

codificado en signo y magnitud es 10001010(2.

Para codificar el −10(10 en exceso a 128(10 será necesario codificar el −10(10 + 128(10 = 118(10.El 118(10 en binario lo encontramos si aplicamos el algoritmo de divisiones sucesivas:

Por lo tanto, 118(10 = 1110110(2 . Consiguientemente, −10(10 codificado en exceso a 128 es01110110(2.

2.a) Si se trata de un número en complemento a 2, sabemos que el número es positivo, ya queel primer dígito es 0. Por lo tanto, sólo habrá que aplicar el TFN para conocer el módulo:

427 = 213 · 2 + 1213 = 106 · 2 + 1106 = 53 · 2 + 053 = 26 · 2 + 126 = 13 · 2 + 013 = 6 · 2 + 1

6 = 3 · 2 + 03 = 1 · 2 + 11 = 0 · 2 + 1

10 = 5 · 2 + 05 = 2 · 2 + 12 = 1 · 2 + 01 = 0 · 2 + 0

0 0 0 0 1 0 1 0 ←valor numérico inicial

1 ← transporte

1 1 1 1 0 1 0 1 ←complemento bit a bit de la expresión inicial

+ 1 ←sumamos 1 al bit menos significativo del formato

1 1 1 1 0 1 1 0

118 = 59 · 2 + 059 = 29 · 2 + 129 = 14 · 2 + 114 = 7 · 2 + 07 = 3 · 2 + 13 = 1 · 2 + 11 = 0 · 2 + 1

© FUOC • PID_00153515 128 Representación de la información numérica

00100100(2 = 25 + 22 = 36(10. Si está codificado el complemento a 2, el número representadoes el +36(10.

b) Si se trata de un número codificado en signo y magnitud, es un número positivo, ya queel primer dígito corresponde al signo y es cero. El resto de los dígitos codifican la magnituden binario que podemos pasar a base 10 si aplicamos el TFN: 0100100(2 = 25 + 22 = 36(10. Porlo tanto, el número codificado en signo y magnitud es el +36(10. Podemos ver que coincidecon la interpretación en Ca2. Esto se debe a que se trata de un número positivo. Los númerospositivos presentan la misma codificación en signo y magnitud que en Ca2.

c) Si se trata de un número codificado en exceso a 128(10 y queremos conocer el valor decimalque representa, debemos hacer la siguiente operación:

00100100(2 − 128(10 = 00100100(2 − 10000000(2 = 36(10 − 128(10 = −92(10

Por lo tanto, el número codificado es −92(10.

3.

Como se puede observar, se produce un fenómeno de desbordamiento. Por lo tanto, el resul-tado no se puede almacenar en el número de bits disponibles. El resultado es incorrecto.

4. Para codificar este número, aplicaremos el procedimiento de divisiones sucesivas primeropara la parte entera y después para la parte fraccionaria.

12 = 6 · 2 + 016 = 3 · 2 + 013 = 1 · 2 + 111 = 0 · 2 + 1

Por lo tanto, 12(10=1100(10

0,346 · 2 = 0,692 = 0,692 + 00,692 · 2 = 1,384 = 0,384 + 10,384 · 2 = 0,768 = 0,768 + 00,768 · 2 = 1,536 = 0,536 + 1

Por lo tanto, 0,346(10 = 0,0101…(2.

Finalmente, si juntamos las dos partes obtenemos: 12,346(10 = 1100,0101…(2. Puesto que sólose dispone de tres dígitos para la parte fraccionaria, y se utiliza una aproximación por trun-camiento: 12,346(10 = 1100,010(2.

El número +12,346(10 codificado en el formato indicado es 01100010.

5. El formato especificado tiene la forma dada por la siguiente tabla:

• Codificaremos la magnitud 12,346(10 en base 2. Como se puede ver en la solución de laactividad 4 de autoevaluación, 12,346(10 = 1100,0101... (2.

• A continuación, normalizamos la expresión obtenida (añadiendo la información del sig-no) en la forma ±R · 2e: +12,346(10 +1,1000101(2 · 2

3.

• Finalmente, obtenemos los distintos elementos que definen la representación.– Signo: se trata de un número negativo. Por lo tanto, el bit de signo será un 0.

1 1 1 ← transportes

1 1 1 0 1 0 1 0 1 1 0 0 (2

+ 1 1 1 1 0 0 0 0 1 0 0 1 0 (2

1 1 1 0 0 1 0 1 1 1 1 1 0 (2 ← resultado

desbordamiento

Signo (S) Exponente (e) Mantisa

1 bit 4 bits 3 bits

© FUOC • PID_00153515 129 Representación de la información numérica

– Exponente: el exponente es 3(10, que hay que codificar en exceso a M = 2q–1. Ya que dispone-mos de 4 bits, el exceso es M = 23 = 8. Por lo tanto, hay que representar 3(10 + 8(10 = 11(10 con4 bits:

Es decir, e = 11(10 = 1011(2 (en exceso a 8).

– Mantisa: R = 1,1000101(2. Puesto que hay bit implícito (1,X), sólo es necesario representarla parte derecha de la coma y disponemos de 3 bits (con truncamiento). Así pues, la man-tisa serán los tres bits a partir de la coma: 100.

– Ahora ya podemos juntar todas las partes:

Es decir, la representación es 01011100.

6. Para codificar un número en BCD, debemos codificar cada dígito decimal en cuatro dígitosbinarios. Si juntamos las codificaciones, conseguimos la representación en BCD:

1(10 = 0001(27(10 = 0111(28(10 = 1000(2

Y finalmente, el número 178(10 codificado en BCD es 000101111000(2.

7. En primer lugar, desempaquetaremos el número y convertiremos cada dígito hexadecimalen cuatro dígitos binarios:

378 = 001101111000(2

En segundo lugar, hay que identificar los diferentes elementos que componen este formato:

– Bit de signo S = 0; por lo tanto, se trata de un número negativo.

– Exponente: puesto que la mantisa es de 4 bits, quedan 7 bits (0110111(2) para el exponente(q = 7). Por lo tanto, el exceso será M = 2q–1 = 26 = 64(10. Entonces, el exponente valee = 0110111(2 – 64(10 = (25 + 24 + 22 + 21 + 20) – 64 = (32 + 16 + 4 + 2 + 1) – 64 = 55 – 64 = – 9(10.

– Finalmente, los cuatro bits que quedan forman la mantisa que, puesto que está normali-zada en la forma 1,X con bit implícito, toma el valor R = 1,1000(2.

– Ahora, ya podemos calcular el número representado en base 10 aplicando la fórmula ±R ·2e y el TFN:

–1,1000(2 · 2−9 = –(20 + 2–1) · 2−9 = –(2−9 + 2−10) = –(0,001953125 + 0,0009765625) =

= –0,0029296875(10.

8. Para codificar el número −45(10 en complemento a 2 es necesario, en primer lugar, expresaren binario el módulo (45(10). Esto lo conseguiremos si aplicamos el algoritmo de divisionessucesivas:

45 = 22 · 2 + 122 = 11 · 2 + 011 = 15 · 2 + 115 = 12 · 2 + 112 = 11 · 2 + 011 = 10 · 2 + 1

11 = 5 · 2 + 15 = 2 · 2 + 12 = 1 · 2 + 01 = 0 · 2 + 1

Signo (S) Exponente (e) Mantisa

0 1011 100

Signo (S) Exponente (e) Mantisa

0 0110111 1000

© FUOC • PID_00153515 130 Representación de la información numérica

Por lo tanto, 45(10 = 101101(2. Puesto que el número −45(10 es negativo, se deberá representaren 8 bits la magnitud positiva y hacer un cambio de signo:

El número −45(10 codificado en complemento a 2 es 11010011(2.

Para empaquetar esta cadena de bits, debemos hacer grupos de 4 bits y después codificarlosen hexadecimal.

1101(2 = D(160011(2 = 3(16

Finalmente, el número codificado y empaquetado en hexadecimal es D3(16.

9. Lo primero que haremos será codificar en binario el número. Lo haremos con el algoritmode divisiones sucesivas, por separado en la parte entera y la fraccionaria:

35 = 17 · 2 + 117 = 18 · 2 + 118 = 14 · 2 + 014 = 12 · 2 + 012 = 11 · 2 + 011 = 10 · 2 + 1

Por lo tanto, 35(10 = 100011(2

Por lo tanto, 0,25(10 = 0,01 (2

Si juntamos las dos partes, obtenemos: 35,25(10 = 100011,01(2.

Para representar la parte entera necesitamos 6 bits, y para representar la parte fraccionaria sonnecesarios 2 bits. Además, necesitamos un bit para representar el signo. Por lo tanto, serán nece-sarios nueve dígitos, de los cuales dos se tienen que destinar a la parte fraccionaria. El númerocodificado en este formato es: 110001101(2.

9. Lo primero que haremos será codificar en binario los números que nos han dado. Lo ha-remos con el algoritmo de divisiones sucesivas. Primero lo aplicaremos sobre la parte entera,y después sobre la parte fraccionaria.

12 = 6 · 2 + 016 = 3 · 2 + 013 = 1 · 2 + 111 = 0 · 2 + 1

Por lo tanto, 12(10=1100 (2

0,25 · 2 = 0,5 = 0,5 + 00,5 · 2 = 1,0 = 0 + 1

Por lo tanto, 0,25(10 = 0,01(2. Y si juntamos las dos partes, obtenemos: 12,25(10 = 1100,01(2.Finalmente, si añadimos el bit de signo (que es cero) y la magnitud en 8 bits de los cuales 2son fraccionarios, tenemos:

+12,25(10 = 0001100,01(2

32 = 16 · 2 + 016 = 18 · 2 + 018 = 14 · 2 + 014 = 12 · 2 + 012 = 11 · 2 + 011 = 10 · 2 + 1

0 0 1 0 1 1 0 1 ← valor numérico inicial

1 1 0 1 0 0 1 0 ← complemento bit a bit de la expresión inicial

+ 1 ← sumamos 1 al bit menos significativo del formato

1 1 0 1 0 0 1 1

0,25 2 = 0,5 = 0,5 + 00,5 2 = 1,0 = 0 + 1

© FUOC • PID_00153515 131 Representación de la información numérica

Por lo tanto, 32(10=100000(2

0,5 · 2 = 1,0 = 0,0 + 1

Por lo tanto, 0,5(10 = 0,1 (2. Y si juntamos las dos partes, obtenemos: 32,5(10 = 100000,1(2. Fi-nalmente, si añadimos el bit de signo (que es cero) y la magnitud en 8 bits de los cuales dosson fraccionarios, tenemos:

+32,5(10 = 0100000,10(2

Ahora hacemos la operación de suma:

Puesto que no hay desbordamiento, el resultado de la suma es correcto.

Glosario

base f Número de dígitos distintos en un sistema de numeración.

BCD m Véase decimal codificado en binario.

binario m Sistema de numeración en base 2.

binary coded decimal m Véase decimal codificado en binario.sigla BCD

bit m Abreviación de binary digit (‘dígito binario’). Corresponde a la menor unidad de in-formación posible. Se define como la cantidad de información asociada a la respuesta de unapregunta formulada de una manera no ambigua, en la que sólo son posibles dos alternativasde respuesta y que, además, tienen la misma probabilidad de ser elegidas.

bit menos significativo m Bit menos significativo (más a la derecha) de una representa-ción numérica posicional.en less significant bitsigla LSB

borrow m Transporte usado en la operación de resta.

byte m Véase octeto.

cadena f Conjunto de elementos de un mismo tipo dispuestos uno a continuación del otro.

carry m Véase transporte.

coma fija f Sistema de representación numérica que utiliza un número fijo de dígitos ente-ros y fraccionarios.

coma flotante f Sistema de representación numérica que codifica un número variable dedígitos enteros y fraccionarios. La cantidad de dígitos enteros y fraccionarios depende del for-mato y del valor numérico que se representa.

decimal m Sistema de numeración en base 10.

decimal codificado en binario m Codificación de los dígitos decimales (0,1,2, …, 9) so-bre un conjunto de cuatro dígitos binarios.en binary coded decimalsigla BCD

desbordamiento m Indicación de que el resultado de una operación queda fuera del rangode representación disponible. en overflow

digital m Sistema que trabaja con datos discretos.

← transportes

0 1 0 0 0 0 0 , 1 0 (2

+ 0 0 0 1 1 0 0 , 0 1 (2

1 1 0 1 0 0 0 , 1 1 (2 ← resultado

© FUOC • PID_00153515 132 Representación de la información numérica

dígito m Elemento de información que puede tomar un número finito de valores distintos.El número de valores diferentes es determinado por la base de numeración.

empaquetamiento m Transformación que permite representar la información binaria deuna manera más compacta.

formato m Descripción estructural de una secuencia de datos, donde se especifica el tipo,la longitud y la disposición de cada elemento.

fraccionario m Menor que la unidad.

hexadecimal m Sistema de numeración en base 16.

less significant bit m Véase bit menos significativo.

LSB m Véase bit menos significativo.

MSB m Véase bit más significativo.

octal m Sistema de numeración en base 8.

octeto m Cadena de 8 bits.en byte

overflow m Véase desbordamiento.

palabra f Unidad de información procesada por un computador de una sola vez (en pa-ralelo).en word

precisión f Diferencia entre dos valores consecutivos de una representación.

raíz f Base de un sistema de numeración.

rango m Conjunto de valores que indican los márgenes entre los cuales están los valores po-sibles de un formato de representación.

representación f Véase formato.

transporte m Bit que indica que se ha superado el valor b de la base de numeración alsumar dos dígitos. La suma de dos valores numéricos se lleva a cabo dígito a dígito, progre-sando de derecha a izquierda. Un transporte, al sumar dos dígitos, indica que hay que aña-dir una unidad al hacer la suma de los dos dígitos siguientes.en carry

word m Véase palabra.

Bibliografía

Miguel, P. de (1996). Fundamentos de los computadores (5.ª ed., cap. 2). Madrid: Paraninfo.

Patterson, D.; Henessy, J. L. (1995). Organización y diseño de computadores: la interfazhardware/software. Madrid: McGraw-Hill.

Stallings, W. (1996). Organización y arquitectura de computadores: diseño para optimizar pres-taciones. Madrid: Prentice Hall.