Top Banner
I.- Sistemas numéricos en computadores 1.1- Datos e información Debido a la naturaleza de las memorias semiconductoras, las computadoras digitales se diseñan para trabajar con el sistema binario. Independientemente de cómo el usuario o el programador interpreta estos bits, la computadora sólo trabaja con ceros y unos. El hombre asigna un significado deseado a un bit o grupos de bits y adapta estos a los requerimientos individuales de un problema en particular. Un grupo de bits se interpretan en función de cómo se agrupan, el significado que se les asigna se denomina sistemas de codificación (siendo los más comunes el octal, binario y hexadecimal). Un valor como el 000101010011b (binario), puede ser codificado como 339D (decimal), 523O (octal) o 153H (hexadecimal). Considerando lo anterior, se puede definir: Datos: Es un conjunto de bits desprovistos de cualquier significado o interpretación. Información: Significado e interpretación que se le incorpora a los datos. Como elemento fundamental de una computadora, la unidad central de procesos (núcleo de un microprocesador) procesa datos, pero el sistema de cómputo opera con información. La sección de entrada (ver fig. 1.1) recibe la información, la libera de la interpretación y presenta los datos a la computadora, la cual los procesa. Una vez terminado el procesamiento, estos datos se convierten en información por la unidad de salida para que sean interpretados por el hombre, tal y como muestra la fig. 1.1. Información Información Datos Datos Figura 1.1.- Tratamiento de los datos e información por la computadora. La información se procesa en forma de caracteres, los cuales pueden clasificarse en: Unidad de Entrada CPU Unidad de Salida
62

Sistemas numericos

Apr 12, 2017

Download

Engineering

Omar Sánchez
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Sistemas numericos

I.- Sistemas numéricos

en computadores

1.1- Datos e información Debido a la naturaleza de las memorias semiconductoras, las computadoras digitales se diseñan para

trabajar con el sistema binario. Independientemente de cómo el usuario o el programador interpreta estos

bits, la computadora sólo trabaja con ceros y unos. El hombre asigna un significado deseado a un bit o

grupos de bits y adapta estos a los requerimientos individuales de un problema en particular.

Un grupo de bits se interpretan en función de cómo se agrupan, el significado que se les asigna se

denomina sistemas de codificación (siendo los más comunes el octal, binario y hexadecimal).

Un valor como el 000101010011b (binario), puede ser codificado como 339D (decimal), 523O (octal) o

153H (hexadecimal).

Considerando lo anterior, se puede definir:

Datos: Es un conjunto de bits desprovistos de cualquier significado o interpretación.

Información: Significado e interpretación que se le incorpora a los datos.

Como elemento fundamental de una computadora, la unidad central de procesos (núcleo de un

microprocesador) procesa datos, pero el sistema de cómputo opera con información. La sección de

entrada (ver fig. 1.1) recibe la información, la libera de la interpretación y presenta los datos a la

computadora, la cual los procesa. Una vez terminado el procesamiento, estos datos se convierten en

información por la unidad de salida para que sean interpretados por el hombre, tal y como muestra la fig.

1.1.

Información Información

Datos Datos

Figura 1.1.- Tratamiento de los datos e información por la computadora.

La información se procesa en forma de caracteres, los cuales pueden clasificarse en:

Unidad de

Entrada

CPU

Unidad de

Salida

Page 2: Sistemas numericos

- Caracteres alfabéticos: Conjunto de letras del abecedario inglés (mayúsculas y minúsculas): A, B, C,

D, E,..., X, Y, Z; a, b, c, d, e,..., x, y, z.

- Caracteres numéricos: Conjunto de números decimales: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.

- Caracteres especiales: Son los símbolos no incluidos en los caracteres alfabético y numérico, como

son, entre otros: ; : , . Ñ ñ ( ) * / + = & > >[ ] Ç # ? ! “ SP (espacio en blanco).

- Caracteres de control: Representan las órdenes de control, como carácter de fin de línea, el carácter

indicador de sincronización de una transmisión, o que se produzca un pitido, etc. En general se

generan e insertan por la propia computadora.

- Caracteres gráficos: Son los símbolos o módulos con los que se pueden representar figuras

elementales.

A las dos primeras clases de caracteres se denominan caracteres alfanúmericos, y en general a las tres

últimas clasificaciones se les denomina caracteres de texto.

1.2- Sistemas de numeración

El número es, en esencia, la representación de un ente cuantitativo. Un sistema de numeración es una

serie de números con sus reglas de combinación y cuyo elemento esencial es la base del mismo, que

define las cifras que forman al sistema. Considerando lo anterior, todo número se puede representar

mediante una serie de cifras, donde el valor de esta cifra dependerá de ella misma y del lugar que ocupa la

cifra dentro del número.

Un sistema de numeración se caracteriza por:

a) Estar formado por cifras las cuales van desde cero, con incrementos unitarios, hasta el valor de la base

menos uno, es decir:

0 ( 1)a bi 1,i b (1.1)

donde:

- ai: Cifras básicas del sistema de base b.

- b: Base del sistema.

- i: Índice de la cifra.

b) Cualquier número N de un sistema numérico se representa de una única forma:

N = an an-1 an-2 . . . a0 . a-1 . . . a-m (1.2)

donde:

- n: Índice de la más significativa de las cifras básicas.

Page 3: Sistemas numericos

- m: Índice de la menos significativa de las cifras básicas.

- : Punto separador de las cifras enteras y fraccionarias.

- ai: Cifras básicas.

La ecuación (1.2) es equivalente al número resultante de aplicar:

N = anbn + an-1b

n-1 + an-2b

n-2 + ... + a1b

1 + a0b

0 + ... + a-1b

-1+... + a-mb

-m (1.3)

por lo que puede plantearse que:

c) El valor del número no sólo depende de las cifras básicas que forman el número, sino de la posición

relativa de las mismas en dicho número.

Se puede, por tanto, formar tantos sistemas de numeración como se quiera dependiendo de la selección de

la base (2, 3, 4, 8, etc.). No se plantea el 1, pues este comenzará en 0 y se quedará en 0 ( de aplicar (1.1),

la base menos uno es cero), a lo que obliga el sistema.

1.2.1.- El sistema decimal

El sistema decimal es originario de la India. Creado en el siglo VII, fue desarrollado por un desconocido y

hasta nuestros días es el sistema utilizado por más del 80% de la población mundial. Su base es 10, por lo

que sus cifras básicas son 0,1,2,3,4,5,6,7,8 y 9.

Un número decimal puede representarse de la siguiente forma:

1237.45

donde las cifras son 1,2,3,7,4,5 (de izquierda a derecha), estando determinado el valor de cada cifra por el

lugar que ocupa entre las demás, tal y como muestra la tabla 1.1.

Potencias de 10 Decimal Valor de la posición Resultado parcial

103 1 1000 1000

102 2 100 200

101 3 10 30

100 7 1 7

10-1

4 0.1 .4

10-2

5 0.01 .05

Resultado final

1237.45

Tabla 1.1- Ejemplo de un número expresado en base decimal

Del desarrollo que se muestra en la tabla 1.1 se puede plantear que el valor decimal desglosado en

resultados parciales es igual a 1 mil, 2 cientos, 3 dieces, 7 unos, 4 décimas y 5 centésimas (1000 + 200

+30 + 7 + .4 + .05=1237.45).

Page 4: Sistemas numericos

Cualquier otro sistema se puede definir (como se ha expuesto) sólo a partir de su base. Por consecuencia,

un sistema de base 4 estaría conformado por las cifras 0, 1, 2 y 3. Nótese como ninguna cifra puede

exceder ni ser igual a su base.

Es común identificar la base del número como subíndice de la cantidad o como una letra a la derecha del

número. Cuando no se coloca identificador, se supone que el valor está expresado en decimal.

Se puede generalizar que cualquier sistema numérico de base b y positivo puede ser representado en un

sistema decimal como (forma general de expresar la ecuación (1.3)):

1

1 0 1

10 1 0 1... . ...q

i q p

i q p

i p

N a b a b a b a b a b

(1.4)

siendo:

b: Base del sistema (entero mayor que uno).

ai : Cifras básicas ( cuyo rango de definición es 0 ai b-1).

. : Punto que separa las cifras enteras y fraccionarias.

p: Orden menor de la parte fraccionaria (número de cifras fraccionarias).

q-1: Orden mayor de la parte entera.

q: Número de cifras enteras.

1.2.2.- Sistema binario

Es el sistema fundamental en que operan las máquinas computadoras. Su base es 2, por lo que sus cifras

son 0 y 1. La forma de representar un número en el sistema binario es:

1010.1012 ó 1010.101b

donde el subíndice 2 o la letra b indican que las cifras se representan en el sistema binario de numeración.

En este caso, el punto que separa a la parte entera de la fraccionaria se le denomina coma binaria.

Para obtener el equivalente decimal del anterior número binario se puede aplicar (1.4), de lo que resulta:

3

3 2 1 0 1 2 3

10 3 2 1 0 1 2 3

3

2 2 2 2 2 2 2i

i

i

N a a a a a a a a b

= 1(8) + 0(4) + 1(2) + 0(1) + 1(0.5) + 0(0.25) + 1(0.125) = 8 + 2 + 0.5 + 0.125 = 10.625

Nótese en el desarrollo anterior como para representar una misma cantidad numérica son necesarias

más cifras binarias que cifras decimales (7 cifras binarias por 5 decimales). Lo anterior se debe al

tamaño de la base, por lo que puede plantearse: A mayor tamaño de la base, menor cantidad de cifra

para representar cierta cantidad numérica.

Page 5: Sistemas numericos

Se debe destacar que, de manera general, en las computadoras se trabaja con la parte entera, reservando la

operación con la parte fraccionaria para el trabajo en punto fijo o en coma flotante.

Los números binarios son los más utilizados en las computadoras por la rapidez y seguridad de respuesta

de los elementos físicos, por la sencillez de operaciones aritméticas y debido a la naturaleza de los

dispositivos electrónicos; lo que compensa la necesidad de utilizar un mayor número de cifras. Es más

sencillo construir un elemento que pueda estar normalmente abierto o cerrado (biestable) que otro de 10

estados posibles.

1.2.3.- Sistema Octal

La base del sistema octal es 8 y las cifras que lo constituyen son 0,1,2,3,4,5,6 y 7. La amplia utilización

de este sistema radica en la búsqueda de un sistema intermedio entre el binario y el decimal. El

tratamiento de números binarios es muy engorroso debido a que su pequeña base (la menor posible en un

sistema numérico) provoca que para representar un número se necesita gran cantidad de cifras, por lo que

se imponía entonces la búsqueda de un sistema numérico que fuera fácilmente transformable al binario y

que su base fuera lo más cercana al decimal. De esta forma se podía trabajar con tal sistema con una idea

más clara de las entidades que él representa y posteriormente traducirlo al binario con facilidad. De las

bases más cercanas a 10 (9,11,8 y 12) sólo el 8 es fácilmente transformable (23 = 8).

Un número octal puede representarse de la siguiente forma:

45.328 ó 45.32o (donde o representa octal, es decir, en base ocho)

Para obtener el equivalente decimal de un número octal se puede utilizar (1.4), entonces:

1

1 0 1 2

10

2

8 4(8 ) 5(8 ) 3(8 ) 2(8 ) 32 5 3/8 2/ 64 37.40625i

i

i

N a

1.2.3.1.- Conversión entre los sistemas numéricos binario y octal

Como se ha planteado, la conversión entre los sistemas binarios y octal es simple, basta reagrupar 3 cifras

binarias de derecha a izquierda y convertirlas a su equivalente octal (ver tabla 1.2), por ejemplo:

01101100111b = 1547o

donde, de derecha a izquierda:

111b = 7o, 100b = 4o, 101b = 5o y 001b = 1o.

Nótese como en el dígito de la izquierda pueden faltar bits, sustituyéndolos por cero(s).

Para realizar el proceso inverso, transformar de octal a binario, basta sustituir cada cifra en octal por las

tres equivalentes en binario, como se muestra a continuación:

3420o = 011100010000b

donde, de derecha a izquierda:

0o = 000b, 2o = 010b, 4o = 100b y 3o = 011b

Page 6: Sistemas numericos

La base de operaciones de una computadora está organizada en 8, 16 ó 32 cifras binarias, las cuales

constituyen 3, 6 y 11 cifras octales respectivamente.

1.2.4.-Sistema Hexadecimal

El sistema hexadecimal, a pesar de ser un sistema numérico más difícil de comprender que el octal, es el

más utilizado, debido a que el agrupamiento de cifras binarias en las computadoras es un múltiplo de 4.

Este sistema, como el octal, permite simplificar la manipulación de grandes cadenas de cifras binarias.

La base del sistema hexadecimal es 16 y las cifras básicas son 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E y F. Nótese

como, al excederse los tipos de cifras que constituyen al sistema decimal, se han utilizado caracteres para

los números 10,11,12,13,14 y 15.

Decimal Binario Octal Hexadecimal

0 0000 0 0

1 0001 1 1

2 0010 2 2

3 0011 3 3

4 0100 4 4

5 0101 5 5

6 0110 6 6

7 0111 7 7

8 1000 10 8

9 1001 11 9

10 1010 12 A

11 1011 13 B

12 1100 14 C

13 1101 15 D

14 1110 16 E

15 1111 17 F

Tabla 1.2- Conversión entre los sistemas numéricos decimal, binario, octal y hexadecimal

Un número en hexadecimal puede representarse de la siguiente forma:

1C6E.316 = 1C6E.3h

el cual puede convertirse al sistema decimal aplicando (1.4), de lo que resulta:

3

3 2 1 0 1

10

1

16 1(16 ) 12(16 ) 6(16 ) 14(16 ) 3(16 )i

i

i

N a

= 1 4096 + 12 256 + 6 16 + 14 1 + 3 1/16 = 7278.1875

Nótese como (ver la tabla 1.2), hay que hacer las sustituciones basándose en las igualdades: A = 10, B =

11, C = 12, D = 13, E = 14 y F = 15.

Page 7: Sistemas numericos

1.2.4.1.- Conversión entre los sistemas binario y hexadecimal

La equivalencia entre las cifras hexadecimales y binarias se muestra en la tabla 1.2. En este caso se

requieren de cuatro cifras binarias por cada cifra hexadecimal (cuatro cifras binarias generan 24

= 16

posibles combinaciones, que corresponden con 16 cifras en el sistema hexadecimal).

El método de conversión de binario a hexadecimal es semejante al de binario a octal, sólo que ahora se

agrupan de 4 en 4 bits, por lo que se cumple:

001011011010 .1011b = 2DA.Bh

donde, de derecha a izquierda:

1011b = Bh, 1010b = Ah, 1101b = Dh y 0010b = 2h

En la conversión de hexadecimal a binario se sustituye cada cifra del sistema hexadecimal por las

correspondientes cuatro cifras que la identifican en el sistema binario como se aprecia a continuación:

23E.Fh = 001000111110 .1111b

siendo la equivalencia de izquierda a derecha:

2h = 0010b, 3h = 0011b, Eh = 1110b y Fh = 1111b

Existen otros sistemas dependientes de su base: Trinario (0 al 2), Cuaternario (0 al 3), Duodecimal (0 al

B). En todos ellos, los sistemas numéricos de base menor que 10 utilizan los símbolos de las primeras

cifras del sistema decimal, los mayores o iguales a 10 las letras del alfabeto latino (A, B, C, etc.).

1.2.5.- Conversión del sistema decimal al resto de los sistemas de numeración

Para transformar del sistema numérico decimal a cualquier otro sistema hay que tratar por separado la

parte entera y la parte fraccionaria. Cuando se trata la parte entera se supone que el punto está a la derecha

de la cifra menos significativa y cuando se trata la parte fraccionaria, entonces se supone que la coma está

a la izquierda de la cifra más significativa.

1.2.5.1.- La parte entera del número decimal

Para transformar la parte entera del número decimal se divide por la base del sistema al que se quiere

transformar tantas veces como sea necesario hasta que el último cociente sea cero. El primer resto

obtenido (r0) constituye la cifra menos significativa (la de menor peso) del número que se busca, mientras

que el último resto (rn-1, donde n es el número de divisiones a ejecutar o el número de cifras del sistema

destino) constituye la cifra más significativa (la de menor peso) del número en cuestión.

El número resultante sería:

rn-1 rn-2 rn-3 ... r0 (1.5)

Page 8: Sistemas numericos

Ejemplo 1.1: Convertir a binario el número 250

Como se realizan sucesivas divisiones entre la base del sistema destino, se dividirá entre 2 (base del

sistema binario), lo cual se muestra en la tabla 1.3.

El número resultante sería:

r7 r6 r5 r4 r3 r2 r1 r0 = 11111010b

siendo válida la siguiente equivalencia:

250d = 11111010b

División Resultado Resto Cifra

250/2 125 0 r0

125/2 62 1 r1

62/2 31 0 r2

31/2 15 1 r3

15/2 7 1 r4

7/2 3 1 r5

3/2 1 1 r6

1/2 0 1 r7

Tabla 1.3.- conversión del número 250 en decimal a binario

Existe un método alternativo de conversión decimal a binario denominado potencias de dos. Este método

consiste en "examinar" en primer lugar el número decimal para descubrir la mayor potencia de dos que se

le puede restar, continuando el proceso hasta reducir el número decimal original a cero.

En el ejemplo 1.1, la primera potencia de dos que se le puede restar al número 250 es 128 (la próxima de

mayor orden es 256 que supera el número) por lo que la cifra correspondiente del número binario que

posea ese peso debe ser uno. Posteriormente se realiza la operación 250-128, de lo que resulta 122. A 122

la próxima potencia de dos que se le puede restar es 64, la sustracción puede ser realizada por lo que la

cifra binaria cuyo peso sea 64 debe ser uno. El proceso continúa, siendo el resultado:

Potencias de dos: 128 64 32 16 8 4 2 1

Número binario: 1 1 1 1 1 0 1 0

Lo que es equivalente a la solución del ejemplo 1.1.

Ejemplo 1.2: Convertir a octal el número 160

Se realiza, para la conversión exigida, sucesivas divisiones entre la base del sistema octal (8), tal y como

se muestra en la tabla 1.4.

Page 9: Sistemas numericos

División Resultado Resto Cifra

160/8 20 0 r0

20/8 2 4 r1

2/8 0 2 r2

Tabla 1.4.- Conversión del número 160 en decimal a octal

La solución sería:

r2 r1 r0 = 240o

lo que es equivalente a:

160d = 240o

Ejemplo 1.3: Repita el ejemplo 1.1, utilizando el sistema octal como intermediario

Una forma natural de convertir de decimal a binario es a través del sistema octal, que es una base

intermedia entre ambos. El sistema octal, al tener mayor base, requiere de menos divisiones. Después de

tener el valor en octal, se transfiere a binario de forma directa. Para obtener la solución del problema,

primero se transforma 250 a octal, tal y como se muestra en la tabla 1.5.

División Resultado Resto Cifra

250/8 31 2 r0

31/8 3 7 r1

3/8 0 3 r2

Tabla 1.5- Conversión del número 250 en decimal a octal

Utilizando los resultados de la tabla 1.5 se cumple:

250d = 372o

se puede entonces transferir el valor octal a binario de manera directa (utilizando la tabla 1.2):

372o = 011111010b

Nótese como el resultado es similar al ejemplo 1.1.

Ejemplo 1.4: Convertir a hexadecimal el número 155 En este ejemplo, como la base del sistema hexadecimal es 16, se realizan sucesivas divisiones entre esta

base, tal y como se muestra en la tabla 1.6.

División Resultado Resto Cifra

155/16 9 11 r0

9/16 0 9 r1

Tabla 1.6.- Conversión del número 155 decimal en hexadecimal

Page 10: Sistemas numericos

Como el número 11 constituye la cifra B en hexadecimal, el resultado sería:

r1 r0 = 9Bh

por lo tanto:

155d = 9Bh

Un método alternativo de transformar de decimal a hexadecimal puede ser convertir el número decimal a

octal, este a binario y por último a hexadecimal.

Ejemplo 1.5: Reproduzca el ejemplo 1.4, utilizando los sistemas binario y octal como intermediarios

En primer lugar se realiza la conversión a octal, tal y como se muestra en la tabla 1.7.

División Resultado Resto Cifra

155/8 19 3 r0

19/8 2 3 r1

2/8 0 2 r2

Tabla 1.7.- Conversión del número 155 en decimal a octal

Del resultado que muestra la tabla 1.7 resulta:

155d = 233o

entonces se puede convertir de octal a binario:

233o = 010011011b

y finalmente, convertir de binario a hexadecimal:

010011011b = 9Bh

Por lo que 155d = 9Bh, lo coincide con el resultado del ejemplo 1.4.

Los ejemplos anteriores demuestran que mientras mayor es la base, menor número de cifras para

representar un número. El valor 155d posee 8 cifras en el sistema binario (base 2), 3 cifras en el sistema

octal (base 8), 3 cifras en el sistema decimal (base 10) y 2 cifras en el sistema hexadecimal (base 16).

1.2.5.2- La parte fraccionaria del número decimal

Para transformar la parte fraccionaria de un número decimal a otro sistema, en lugar de dividirla, hay que

multiplicarla por la base. Cada vez que se multiplique la fracción decimal por la base se obtiene una parte

entera. La primera la denominamos p1 y se extrae del resultado para que solo quede la parte fraccionaria.

Esta parte fraccionaria que queda se multiplica nuevamente por la base y se extrae la parte entera, que

denominamos p2 y así sucesivamente hasta que sea necesario o se indique.

Page 11: Sistemas numericos

El número resultante en la nueva base será:

0 . p1 p2 p3 p4 ... pm

donde m es el número de cifras de la parte fraccionaria.

Ejemplo 1.6: Transforme en octal el número 0.32

Al multiplicar de forma sucesiva por la base del sistema octal (8), resulta:

0.328 = 2.56 (p1 = 2)

0.568 = 4.48 (p2 = 4)

0.488 = 3.84 (p3 = 3)

0.848 = 6.72 (p4 = 6)

0.728 = 5.76 (p5 = 5)

. . .

El método ejecutado ha sido el siguiente:

En primer lugar el número a convertir ha sido multiplicado por la base del sistema que se desea (8), al

resultado (2.56) se le ha sustraído la parte entera (2) y este constituirá la cifra más significativa de la parte

fraccionaria, al extraérsele a 2.56 la parte entera queda 0.56, al que se le multiplica la base; al resultado

(4.48) se le extrae la parte entera (4) y constituirá la próxima cifra de la fracción del número, este proceso

continúa sucesivamente. Se puede plantear entonces que:

0.42d = 0.24365...

Nótese como el resultado no ha sido exacto, al programador le corresponde seleccionar el número de

cifras fraccionarias para una precisión deseada, la cual dependerá de la aplicación.

Ejemplo 1.7: Convertir el número 0.125d a binario

Como la base del sistema binario es 2, ahora las multiplicaciones sucesivas serán por este término:

0.125 2 = 0.250 (p1 = 0 ) (cifra más significativa de la parte fraccionaria)

0.250 2 = 0.500 (p2 = 0)

0.500 2 = 1.000 (p3 = 1)

0.000 2 = 0.000 (p4 = 0)

y las cifras sucesivas seguirán siendo cero, de la anterior operación resulta:

0.125d = 0.001

Un método más rápido puede ser el transformar la fracción decimal a octal y posteriormente a binario. En

el ejemplo 1.7 se aplicaría:

0.125 8 = 1.000 (p1 = 1)

0.000 8 = 0.000 (p2 = 0) y las cifras sucesivas seguirán siendo cero.

Page 12: Sistemas numericos

Se puede entonces afirmar que:

0.125d = 0.1o

y de octal a binario:

0.1o = 0.001b

lo cual coincide con el resultado de la conversión directa a binario.

1.3- Aritmética en los sistemas numéricos

La estructura de datos en los computadores son básicamente agrupaciones de 8, 16 ó 32 bits; todos ellos

son potencia de 2 y 4, por lo que se estudiará la aritmética de los números binarios (que constituyen la

unidad de información básica de las computadoras) y los números hexadecimales.

1.3.1.- Suma en los sistemas numéricos

1.3.1.1.- Suma binaria

La suma de números en el sistema binario sigue las siguientes reglas:

Acarreo anterior

1 del lugar menos

COSUMANDO 0 0 1 1 1 significativo.

SUMANDO +0 +1 +0 +1 +1

___ ___ ___ ___ ___

SUMA 0 1 1 10 11

Acarreo al

siguiente lugar

más significativo

Las tres primeras reglas son elementales, la cuarta regla establece que la suma 1+1=10, con el bit más

significativo trasladado a la próxima posición más significativa. La quinta regla establece que un 1

(acarreo de la operación efectuada en la anterior posición) sumado a 1+1 es 11 donde el 1 de la izquierda

constituye acarreo a la posición adyacente más significativa.

Ejemplo 1.8: Realice la operación de suma binaria que se muestra a continuación ACARREOS 111 1

COSUMANDO 10011101b 157d

SUMANDO +00010101b + 21d

__________ _________ _____

SUMA 10110010b 178d

La suma de los números binarios mostrados es 10110010b, lo que puede comprobarse con la suma

equivalente decimal que se desarrolla a la derecha.

Page 13: Sistemas numericos

1.3.1.2.- Suma hexadecimal

La complejidad de la suma hexadecimal radica en la necesidad de reajustar el resultado de la operación de

acuerdo a la base, al sumar A + B se debe pensar “A es 10 en el sistema decimal al que debo sumarle 11,

que es el decimal de B; el resultado es 21 en decimal. El hexadecimal 10h es 16 en decimal, al que le falta

5 para llegar a 21d, por lo tanto 21d = 15h”.

Si se reajustan las reglas del sistema decimal al hexadecimal y se aplican adecuadamente, se puede operar

en hexadecimal de manera directa. No obstante puede tomarse como referencia la tabla 1.8 para la

realización de la suma en hexadecimal. En cuanto al acarreo, sigue la misma regla que los sistemas

decimal y binario.

+ 0 1 2 3 4 5 6 7 8 9 A B C D E F

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

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

2 2 3 4 5 6 7 8 9 A B C D E F 10 11

3 3 4 5 6 7 8 9 A B C D E F 10 11 12

4 4 5 6 7 8 9 A B C D E F 10 11 12 13

5 5 6 7 8 9 A B C D E F 10 11 12 13 14

6 6 7 8 9 A B C D E F 10 11 12 13 14 15

7 7 8 9 A B C D E F 10 11 12 13 14 15 16

8 8 9 A B C D E F 10 11 12 13 14 15 16 17

9 9 A B C D E F 10 11 12 13 14 15 16 17 18

A A B C D E F 10 11 12 13 14 15 16 17 18 19

B B C D E F 10 11 12 13 14 15 16 17 18 19 1A

C C D E F 10 11 12 13 14 15 16 17 18 19 1A 1B

D D E F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C

E E F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D

F F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E

Tabla 1.8.- Suma en el sistema hexadecimal

Ejemplo 1.9: Realice la operación de suma hexadecimal que se muestra a continuación

ACARREO 1 1 1 1

COSUMANDO 8EE4h 36580d

SUMANDO +1AF8h + 6904d

______ _______

SUMA A9DCh 43484d

La suma hexadecimal se podría analizar de la siguiente forma: "4 más 8 son 12, que corresponde a C en

hexadecimal. Eh corresponde al 14d y Fh al 15d, 14 más 15 es 29, 10h corresponde a 16d y a este último

le faltan 13d para 29; 13d corresponde a Dh y se arrastra un acarreo. E es 14 que al sumarle 1 (acarreo de

la anterior posición) da 15d, a este se le suma 10 que es el decimal de Ah, lo que es igual a 25. 10h corre-

sponde con 16d al cual le faltan 9 para llegar a 25, coloco el 9 y se genera acarreo a la próxima cifra más

significativa. Lo restante es obvio, 1 + 8 + 1 = 10d que corresponde con Ah". Compare este resultado con

la tabla 1.8.

Page 14: Sistemas numericos

1.3.2.- Sustracción en los sistemas numéricos

1.3.2.1.- Sustracción binaria

La sustracción binaria sigue las siguientes reglas:

0 10

MINUENDO 0 1 1 1 0

SUSTRAENDO -0 -0 -1 -1

___ ___ ___ _____

DIFERENCIA 0 1 0 1

Las tres primeras operaciones son las mismas que la resta decimal. La cuarta requiere un préstamo del

lugar más significativo pasando a ser el minuendo 10b (2d) que al restarle 1 da uno como resultado.

Ejemplo 1.10: Realice la operación de sustracción binaria que se muestra a continuación

PRÉSTAMO 11 1

MINUENDO 1001110b 78d

SUSTRAENDO -0110101b -53d

_________ ____

DIFERENCIA 0011001b 25d

En la primera columna de derecha a izquierda, a cero no se le puede sustraer uno, por lo que se le solicita

préstamo a la cifra inmediata más significativa (minuendo) cuyo valor pasa de uno a cero, de ello resulta

que en la columna menos significativa la operación es 10b-1=1. En la segunda columna queda 0-0 = 0

(recuérdese que el minuendo cedió una unidad a la cifra menos significativa). Las operaciones de las

columnas 3 y 4 son básicas, en la quinta columna sucede lo mismo que en la primera, pero el minuendo

de la sexta columna es cero, por lo que no puede ceder ninguna unidad, para poder hacerlo la sexta

columna solicita préstamo a la séptima (cifra diferente de cero), entonces el minuendo de la séptima

columna pasa a 0; el minuendo de la sexta pasa a 10 y la quinta le solicita a la sexta, como se aprecia en la

operación. Nótese que cuando tratamos 10b no nos referimos al 10 decimal, si no al 2 en binario.

1.3.2.2.- Sustracción en hexadecimal

La sustracción en hexadecimal cumple las mismas reglas que la sustracción decimal y binaria,

reajustándose el resultado de acuerdo a la base. Cuando se pide un préstamo se reduce en uno la anterior

posición (más significativa) y se suma 16 a la cifra que ha solicitado el préstamo.

Ejemplo 1.11: Realice la sustracción en hexadecimal que se muestra a continuación

PRÉSTAMO 1

MINUENDO 6AEBh

SUSTRAENDO -23F9h

______

DIFERENCIA 46F2h

En este ejemplo se opera de la siguiente forma: "B es equivalente a 11, 11 menos 9 es 2, lo que se anota;

E es equivalente a 14, al que no se puede restar 15 (valor de F) por lo que se solicita un préstamo a la

posición más significativa que pasa de A (10 decimal) a 9. Como resultado del préstamo el valor del

Page 15: Sistemas numericos

minuendo de la columna 2 es 16 (base) + 14 = 30, 30 menos 15 es 15, que representa a F en hexadecimal,

cifra que se anota. En la tercera columna 9 menos 3 es 6 y en la última 6 menos 2 es 4".

1.3.3.- Multiplicación binaria

La multiplicación binaria sigue las reglas que muestra la tabla 1.9.

Multiplicando Multiplicador Producto

0 0 0

1 0 0

0 1 0

1 1 1

Tabla 1.9.- Reglas de la multiplicación binaria

Se puede apreciar que siempre que el multiplicador sea 0, el resultado será 0 (de las dos primeras reglas) y

que siempre que el multiplicador sea 1 el multiplicando se copia como producto resultante (las dos

últimas reglas).

Ejemplo 1.12: Realice la operación de multiplicación binaria que se muestra a continuación

MULTIPLICANDO 1010 10

MULTIPLICADOR 101 5

_____ ___

PRIMER PRODUCTO PARCIAL 1010 50d

SEGUNDO PRODUCTO PARCIAL 0000

TERCER PRODUCTO PARCIAL 1010

_______

PRODUCTO FINAL 110010b

Como en la multiplicación decimal el multiplicando en binario se multiplica primero por la cifra menos

significativa del multiplicador, como esta última es 1, se copia el multiplicando (primer producto parcial).

Como la segunda cifra del multiplicador es cero, el resultado será cero en todas las cifras (0000),

colocándose desplazado una unidad a la izquierda (segundo producto parcial). Por último la tercera cifra

del multiplicador es 1, por lo que se copia el multiplicando desplazado una unidad a la izquierda con

respecto al segundo producto parcial. La suma de los productos parciales, por supuesto, será el resultado

de la multiplicación. La comprobación de que el resultado es correcto, se muestra a la derecha, donde se

ha ejecutado la misma operación en decimal.

Para que la computadora sea capaz de realizar la multiplicación como se ha mostrado, debe ser capaz de:

1.- Determinar si un bit del multiplicador es 0 ó 1.

2.- Desplazar los productos parciales.

3.- Adicionar los productos parciales.

No es necesario esperar que todos los productos parciales estén formados para sumar estos, se puede

sumar de dos en dos.

Page 16: Sistemas numericos

Del ejemplo anterior, los primeros dos productos parciales son:

1010

+0000

_______

01010

Nótese como el segundo producto parcial ha sido rotado una unidad a la izquierda. A la suma anterior se

le adiciona el tercer producto parcial después de ser rotado a la izquierda, siendo el resultado:

01010

+ 1010

_______

110010

Considerando lo anterior, una multiplicación puede ejecutarse muestreando cada bit en turno del

multiplicador, adicionando el multiplicando en una variable que sea de suma parcial, desplazar el

multiplicando a la izquierda cada vez que un nuevo bit es muestreado, obteniéndose como resultado de la

suma de los productos parciales el producto. El proceso en el ejemplo 1.12 se realiza como se muestra en

el algoritmo 1.

I II

Resultado Parcial Multiplicador Comentario

0000 0101 Se multiplica 105

El resultado parcial se inicializa a 0.

0000 0010 1 1. Se rota I y II a la derecha,

+1010 | muestreando el bit de la derecha

_____ muestreado del multiplicador, como éste es 1,

1010 se le suma el multiplicando a I.

0101 0001 0 2. Se rota I y II a la derecha,

| como el bit muestreado es

muestreado 0, se continúa el proceso.

0010 1000 1 3. Se rota I y II a la derecha,

+1010 | como el bit muestreado es

_____ muestreado 1, se le suma el multiplicando a I.

1100

0110 0100 0 4. Se rota I y II a la derecha.

| como el bit muestreado es

muestreado 0, se continúa el proceso.

0011 0010 5. Se rota I y II a la derecha

y en ellos quedará el resultado.

Algoritmo 1.- Pasos para ejecutar la multiplicación del ejemplo 1.12

Page 17: Sistemas numericos

Cuando se multipliquen números signados, si el signo del multiplicando y el multiplicador son ambos

positivos o negativos, el resultado será positivo; si solo uno es negativo, el resultado será negativo. Para

lograr ello se puede almacenar el bit del signo y realizar las operaciones con números positivos, al final se

realizaría el cambio de signo correspondiente.

1.3.4.- División binaria

Las reglas de la división se muestran en la tabla 1.10.

Dividendo Divisor Cociente

0 1 0

1 1 1

1 0 Indefinido

0 0 Indefinido

Tabla 1.10.- Reglas de la división binaria

La división posee un dividendo, un divisor, un cociente y un resto. El cociente indica cuántas veces cabe

el dividendo dentro del divisor.

Ejemplo 1.13: Realice la división binaria que se muestra a continuación

DIVIDENDO DIVISOR 101011011 111 347 7

111 28 49

____ 110001 ___

0111 COCIENTE 67

111 63

____ ___

0001011 4

111

_____

0100

RESTO

Como se puede apreciar, el divisor posee tres cifras, se toman entonces las tres primeras cifras más

significativas (101) del dividendo. Como el valor de las tres cifras es menor que el divisor se toma una

cuarta, ahora 1010 es mayor que el divisor siendo el primer cociente 1. Al multiplicar el cociente por el

divisor se copia este último, sustrayéndolo al dividendo. El resultado como se aprecia es 011 al cual se le

adiciona la quinta cifra del dividendo (resultando 111). A este valor se le puede sustraer el divisor, por lo

que el cociente es 1 (se anota), siendo el resto 0. Al bajar la sexta cifra del dividendo no se le puede

sustraer el divisor por lo que el cociente es 0, así sucesivamente se le van adicionando las restantes cifras

del dividendo y colocando los ceros correspondientes en el cociente (tantos como cifra bajadas) hasta que

se le pueda sustraer el divisor, esto ocurre con la cifra menos significativa del dividendo, el último valor

del cociente es 1 y el resto es 100. La comprobación, efectuada esta misma operación en el sistema

decimal, se muestra a la derecha.

Para que una computadora realice la división, la operación fundamental es la sustracción del dividendo,

después de esta operación:

Page 18: Sistemas numericos

a.-Si el resultado es negativo, se coloca un cero en el cociente (en el bit más a la derecha) y el dividendo

se restablece a su valor original, sumándole el divisor restado. Posteriormente, el cociente y el dividendo

son rotados simultáneamente a la izquierda.

b.-Si el resultado de la sustracción es positivo o cero, un uno se coloca en el dígito más a la derecha del

cociente, rotando a la izquierda el dividendo y el cociente.

Los pasos para lograr la división serían:

1.- Se le resta al dividendo el divisor, si este último es mayor (el resultado es negativo), el cociente será

cero y el resto será el valor del dividendo.

2.- Se alinea el bit más a la izquierda cuyo valor es uno en el divisor con el bit más a la izquierda del

dividendo cuyo valor es uno, rotando este último a la izquierda y almacenando en una variable M el

número de veces que es necesario realizar el desplazamiento.

3.- El paso básico será repetido M+1 veces.

4.- Se ajusta el resto, rotando M+1 veces a la derecha lo que antes era dividendo después que el último

paso básico se haya realizado.

En el ejemplo 1.13 las condiciones iniciales son:

1 2 3

Cociente Dividendo divisor

0000000000 0101011011 0000000111

0111000000

donde se divide 347 / 7 = 49, siendo el resto 4. El divisor será rotado seis veces a la izquierda para

alinearlo al dividendo, por tanto, el paso básico se realizará siete veces. En algoritmo 2 se muestran los

pasos de la división.

1.4.- Representación de los datos en las computadoras

La información numérica se almacena en localizaciones de memoria de la computadora. Cada

localización de memoria (o unidad de información) puede tener uno de dos estados posibles (la forma de

almacenar la información depende del tipo de memoria, por ejemplo las memorias RAM dinámicas

poseen en una celda un transistor MOS y un capacitor, la carga y descarga de este último define los dos

estados posibles). A la información almacenada en una localización de memoria se le llama dígito binario

o bit (proviene de la palabra Binary digIT, nótese las letras en mayúsculas).

La computadora trata la información almacenada en las memorias como una agrupación de bits, a esta

agrupación de bits se le denomina registro de almacenamiento. El registro de almacenamiento determina

como pueden ser almacenados los datos en un ordenador, lo cual se aprecia en la fig. 1.2.

Page 19: Sistemas numericos

COCIENTE DIVIDENDO COMENTARIO

0000000000 0101011011 2.Se sustrae 2 menos 3.El

-0111000000 resultado es negativo

___________ por lo que se coloca un

1110011011 cero en el cociente ro-

+0111000000 tando este y el dividen-

___________ do a la izquierda después

0101011011 de ser restaurado este

0000000000 1010110110 último.

|

Colocado

0000000000 1010110110 3.Se sustrae 2 menos 3.El

-0111000000 resultado es positivo

___________ y se coloca 1 en el bit

0011110110 más a la derecha del

cociente y se rota este

0000000001 0111101100 y el 2 a la izquierda.

|

Colocado

0111101100 4.Se repite el paso 3.

-0111000000

___________

0000101100

0000000011 0001011000

|

Colocado

0001011000 5.Se repite el paso 2.

-0111000000

___________

1010011000

+0111000000

___________

0001011000

0000000110 0010110000

|

Colocado

0000001100 0101100000 6.Se repite el paso 2.

0000011000 1011000000 7.Se repite el paso 2.

0000110001 1000000000 8.Se repite el paso 3.

0000110001 0000000100 9.El dividendo debe ser rotado 7 veces a la derecha

COCIENTE (49) RESTO (4)

Algoritmo 2.- Pasos para realizar la división 347 / 7

Page 20: Sistemas numericos

Un dato, constituido por determinado número de bits, puede ser utilizado para almacenar un número,

empleando el sistema de numeración binario. Cada uno de los bits que forman el dato puede tomar el

valor 0 ó 1, de manera que si este tiene n bits, con el dato se pueden formar:

Número de combinaciones de un dato = 2n (1.6)

La figura 1.3 muestra un dato genérico, donde n es el número de bits. Cuando n = 8 se tendrá un octeto

(byte) , si n = 16 se tendrá una palabra (word) y si n = 32 se tendrá una palabra doble (double word).

Esta estructura de datos se aprecia en la figura 1.2.

Los bits se enumeran de derecha a izquierda comenzando por cero. Al bit cero se le denomina bit menos

significativo o LSB (del inglés Least Significant Bit) y al bit n-1 se le llama bit más significativo o MSB

(del inglés Most Significant Bit).

__

|__| bit

__ __ __ __

|__|__|__|__| cuarteto o nibble ( 4 bits)

__ __ __ __ __ __ __ __

|__|__|__|__|__|__|__|__| octeto o byte (8 bits)

___________ ___________

|___________|___________| palabra ( 2 bytes, 16 bits)

___________ ___________ ___________ ___________ palabra

|___________|___________|___________|___________| doble

(32 bits)

___________ ___________ ___.....___ ___________

|___________|___________|___.....___|___________| bloque

Figura 1.2- Formato de datos en las computadoras

n-1 n-2 n-3 n-4 3 2 1 0 Posición

___ ___ ___ ___ _...._ ___ ___ ___ ___ del bit

|___|___|___|___|_...._|___|___|___|___|

MSB LSB

Bit más significativo Bit menos significativo

Figura 1.3.- Dato de n bits

1.4.1.- Representación de números enteros

Los números enteros pueden clasificarse en dos grupos:

a-) Números enteros sin signo.

b-) Números enteros con signo.

1.4.1.1.- Números enteros sin signo

Los números enteros sin signo están en el rango:

Page 21: Sistemas numericos

100 2 1nN (1.7)

dónde:

N10 = Valor decimal del número binario.

n = Número de bits.

Aplicando (1.7) un byte puede representar números en el rango (recuérdese que un byte tiene n = 8 bits):

8

100 2 1N

100 255N

Nótese como entre 0 y 255 existen 256 posibles valores, o sea 2n (n = 8).

En una palabra (n = 16) se pueden representar números en el rango:

16

100 2 1N 100 65535N

y en la doble palabra (n = 32):

32

100 2 1N 100 4294967295N

La cantidad en decimal a partir del número binario se puede determinar (utilizando (1.3)):

1

10

0

2n

i

i

i

N a

1.4.1.2.- Números enteros con signo

Hay cuatro formas fundamentales de representar los números enteros con signo: Signo y magnitud, en

complemento a uno, en complemento a dos y de forma sesgada.

a) Signo y magnitud:

Utilizan el bit más significativo para indicar cuando el número es positivo o no. Así, quedan n-1 bits para

el valor absoluto del número. Cuando el bit más significativo es 1 el número será negativo y cuando es 0

será positivo, como indica la figura 1.4.

n-1 n-2 n-3 n-4 3 2 1 0

___ ___ ___ ___ _....____ ___ ___ ___

|___|___|___|___|_...._|___|___|___|___|

binario natural

MSB (determina el signo: "1"- número negativo. "0"- número positivo.)

Figura 1.4.- Representación de un número binario en signo y magnitud

Page 22: Sistemas numericos

b) Complemento a uno:

Si el número es positivo se representa en binario natural y si es negativo se le realiza el complemento a

uno, que es cambiar ceros por unos y unos por ceros. Donde el MSB queda como signo, como se

representa en la figura 1.5.

n-1 n-2 n-3 n-4 3 2 1 0

___ ___ ___ ___ _....____ ___ ___ ___

|___|___|___|___|_...._|___|___|___|___| en binario natural si es > 0

en complemento a uno si es < 0

MSB Determina el signo del código en complemento a uno:

"1"- Número negativo.

"0"- Número positivo.

Figura 1.5.- Representación de un número binario en complemento a uno

Entre sus particularidades está que su rango es simétrico, pero los cálculos son más difíciles y tiene doble

representación para el cero (00000000 = +0 y 11111111 = -0), además de tenerse que detectar el acarreo.

c) Complemento a dos:

Cuando se representa en complemento a dos, si el número es mayor que cero se representará en binario

natural, y si es negativo se le realizará el complemento a dos, que es equivalente a complementar a uno y

sumarle uno al resultado, quedando el bit de signo en el MSB. Como este sistema es el más utilizado, será

el que se explicará con más detalle. La representación del complemento a dos en un dato de n bits se

muestra en la figura 1.6.

n-1 n-2 n-3 n-4 3 2 1 0

___ ___ ___ ___ _....____ ___ ___ ___

|___|___|___|___|_...._|___|___|___|___| en binario natural si es > 0

en complemento a dos si es < 0

MSB Determina el signo del código en complemento a dos:

"1"- Número negativo.

"0"- Número positivo.

Figura 1.6.- Representación de un número binario en complemento a dos

Entre sus particularidades esta sumar y restar números sin tener en cuenta el operando debido a que se

desprecia el acarreo, el rango es asimétrico pero sólo tiene un valor para el 0, puede tener desbordamiento

(no confundir con acarreo superior) y el complemento exige una operación de suma.

Para obtener el valor decimal de un número codificado en complemento a dos se puede utilizar la

siguiente fórmula:

(1.8)

2

0

1

110 22n

i

i

i

n

n aaN

Page 23: Sistemas numericos

dónde:

n = número de bits.

i = posición del bit.

Nótese como cuando se cumple la condición de que el dígito más significativo es cero (an-1 = 0), el

número es siempre positivo, contrario a cuando es 1 (esto último se puede comprobar seteando todos los

digitos desde an-2 hasta a0 , el resultado en (1.8) será -1). En la tabla 1.11 se representan los números

decimales con signo (para un byte) y su notación equivalente en complemento a dos.

Decimal Complento a dos

+127 01111111

..... .....

..... .....

+3 00000011

+2 00000010

+1 00000001

0 00000000

-1 11111111

-2 11111110

-3 11111101

..... .....

..... .....

-128 10000000

Tabla 1.11. - Números decimales con signo y su notación en complemento a dos

Existe un método para obtener el valor absoluto que representa a un número y viceversa, es decir,

determinar cuál es el valor negativo de determinado número. Para ello se realizan los siguientes pasos:

1-) Se representa el número en el sistema binario.

2-) Se realiza el complemento a uno (se sustituyen los unos por ceros y los ceros por unos).

3-) Se adiciona 1.

Ejemplo 1.14: Determine el valor que representa el número negativo 10101100b

De utilizar la ecuación (1.8) para n = 8, se cumple:

N10 = -1(128) + 0(62) + 1(32) + 0(16) + 1(8) + 1(4) + 0(2) + 0(1) = -128 + 32 + 8 + 4 = -84d

Si se utiliza el método de complemento a dos:

1-) Representación del número en binario:

10101100b

Page 24: Sistemas numericos

2-) Realizar el complemento a 1 del número:

01010011b

3-) Se adiciona 1:

01010011b

+ 1b

___________

01010100b donde 01010100b = 84d

Obteniéndose el valor absoluto del número negativo.

Ejemplo 1.15: Obtenga el valor negativo del número 84d Para la resolución de este ejemplo, es necesario realizar los siguientes pasos:

1-) Representación del número en binario:

84d = 01010100b

2-) Determinar el complemento a 1:

10101011b

3-) Adicionar 1:

10101011b

+ 1b

__________

10101100b

Por tanto, se puede plantear que 10101100b = -84d.

Nótese como el resultado es equivalente al número binario del que se parte en el ejemplo 1.14.

El rango de números representados en complemento a dos cumple:

122 110

1 nn N (1.9)

por lo que el rango para datos de 8 bits es:

127128 10 N

ello es, los extremos de la tabla 1.11.

El rango para datos de 16 bits cumple, aplicando la ecuación (1.9):

3276732768 10 N

Page 25: Sistemas numericos

El rango para datos de 32 bits es:

21474836472147483648 10 N

Algunas características que identifican a los datos del complemento a dos son:

1-) Los números pares (positivos o negativos) tienen el LSB en 0.

2-) Los números divisibles por 4 tienen 2 LSB=0.

3-) Los números divisibles por 2n tienen n LSB=0.

La importancia de los números en complemento a dos radica en que permiten representar números

negativos en el sistema binario y facilita la operación de resta pues (A – B) = A + (-B), lo cual permite

simplificar la aritmética y los circuitos del ordenador.

d) Sesgado:

Se le suma al número un sesgo o cantidad, que será 2n-1

, de tal forma que el número será siempre positivo

y no será necesario un bit de signo. De esta manera la representación de un dato N de n bits será como

indica la figura 1.7:

n-1 n-2 n-3 n-4 3 2 1 0

___ ___ ___ ___ _....____ ___ ___ ___

|___|___|___|___|_...._|___|___|___|___| N + S (2n-1

) en binario

Figura 1.7.- Representación de un numero binario de forma segada

Esta representación es la que se usa para indicar el exponente en los números reales, lo cual se analiza en

profundidad en la sección que trata la representación de un número en coma flotante.

En la tabla 1.12 se puede observar la estructura de las cifras en los distintos modos de representación de

enteros con signo, para un número de bits n = 4. Nótese como las representaciones en complemento a dos

y sesgada pueden representar un número negativo más, ya que no tienen identificador para el cero

negativo, con las ventajas que ello conlleva (simplificación de hardware al no tener que detectar el cero

negativo y mayor rango de representación).

1.4.2.- Representación de números fraccionarios

Los números fraccionarios, como los enteros, pueden interpretarse como números con signo o sin signo,

la diferencia entre ellos radica en la colocación del punto decimal imaginario.

Hasta ahora se ha considerado en los números enteros existe un punto fijo (imaginario) a la derecha del

dígito menos significativo (ver figura 1.8). El lugar donde se considera que el punto fijo esté situado

determinará si la fracción es con signo o sin signo.

Page 26: Sistemas numericos

Tipo de representación

Número decimal

Signo y

Magnitud

Complemento a

1

Complemento a

2

Sesgado

7

6

5

4

3

2

1

+0

0111

0110

0101

0100

0011

0010

0001

0000

0111

0110

0101

0100

0011

0010

0001

0000

0111

0110

0101

0100

0011

0010

0001

0000

1111

1110

1101

1100

1011

1010

1001

1000

-0

-1

-2

-3

-4

-5

-6

-7

-8

1000

1001

1010

1011

1100

1101

1110

1111

-----

1111

1110

1101

1100

1011

1010

1001

1000

-----

-----

1111

1110

1101

1100

1011

1010

1001

1000

-----

0111

0110

0101

0100

0011

0010

0001

0000

Tabla 1.12.- Representación de datos tipo entero con signo, para n = 4 bits

1.4.2.1.- Números fraccionarios sin signo

Para representar números fraccionarios sin signo se considera el punto binario imaginario colocado a la

izquierda de la cifra más significativa (ver figura 1.9).

La magnitud que representa un dato interpretado como fraccionario sin signo es el valor entero dividido

entre la cantidad de valores (posibles combinaciones) que se pueda representar en dicho dato.

Considerando lo anterior, el valor que representa un número fraccionario responde a:

1

10

0

12

2

ni

ini

N a

(1.10)

donde 2n es la cantidad de valores que puede representar un dato de n bits.

2n-1

2n-2

2 1

___________ ___________ _...._ ________ ________

|___________|___________|_...._|________|________|

Figura 1.8.- Representación de un número entero

2n-1

/2n 2

n-2/2

n 2/2

n 1/2

n

___________ ___________ _...._ ________ ________

|___________|___________|_...._|________|________|

Figura 1.9.- Representación de un número fraccionario sin signo

Page 27: Sistemas numericos

Ejemplo 1.16: Represente en un byte el número 0.0390625d

Para solucionar este problema se aplica (1.10) (recuérdese que un byte tiene 8 bits), de despejar resulta:

7

8

0

0.0390625 2 2i

i

i

a

7

0

210i

iia

Como consecuencia de aplicar la anterior expresión (que no es más que la obtención del número binario

de 10d) se obtiene:

10d = 00001010b

de lo que se concluye que si un octeto posee el valor 00001010 y se interpreta como fraccionario sin

signo, este representa a 0.0390625d.

Ejemplo 1.17: Obtenga la fracción sin signo que representa al número 10111010b

Aplicando la ecuación (1.10), se cumple:

7

10 80

12

2

i

i

i

N a

de lo que resulta:

N10 = 0.7265625

entonces, el valor 10111010b representa a 0.7265625 interpretado como fraccionario sin signo.

El rango de un dato interpretado como entero sin signo está establecido por (1.10), como el valor

fraccionario es el dato entero entre las posibles combinaciones que puede representar ese dato, resulta que

el rango de los números fraccionarios viene dado por:

10

2 10

2

n

nN

lo que es equivalente a:

nN 210 10 (1.11)

Aplicando la anterior expresión, el rango de números fraccionarios que puede representarse en un byte es:

99609375.00 10 N

Como en un byte se puede representar 256 posibles combinaciones, esto equivale a 256 valores

fraccionarios en el rango definido por (1.11) y la diferencia entre una fracción y otra es 1/256

(0.00390625).

Page 28: Sistemas numericos

El rango de números que se representan en una palabra (16 bits) es:

12110.999984740 10 N

En un palabra se pueden representar hasta 65536 posibles combinaciones, lo cual es equivalente a

representar 65536 valores fraccionarios en el rango dado por (1.11) y la diferencia entre una fracción y

otra es 1/65536 (0.0000152587890625).

En una doble palabra (32 bits) se pueden representar enteros fraccionarios en un rango:

97670.999999990 10 N

La razón de incremento entre los 232

posibles valores en una doble palabras es 2.328306e-10.

Nótese como a medida que aumenta el número de bits que se utiliza para representar un valor n, aumenta

la precisión del dato representado.

1.4.2.2.- Números fraccionarios con signo

Para interpretar datos como fracciones con signo se considera que el punto fijo (imaginario) está colocado

a la derecha del dígito más significativo como muestra la figura 1.10. Este tipo de representación es

semejante al complemento a dos, pues el bit más significativo representa el signo (si este es 1 la fracción

será negativa y si es cero, positiva).

Al considerar la existencia de un punto fijo a la derecha del MSB (bit del signo) provoca que la magnitud

entera que representa el dato esté dividida por el entero de mayor valor absoluto que se pueda obtener de

la palabra de dato cuando se considera este en complemento a dos. De aplicar (1.9), resulta que el mayor

valor absoluto en complemento a dos es:

1-Negativo.

0-Positivo. 2n-2

/2n-1

2/2n-1

1/2n-1

___________ ___________ _...._ ________ ________

|___________|___________|_...._|________|________|

Figura 1.10.- Representación de un número fraccionario con signo.

11 22 nn

Por lo que (1.8) se redefine para los fraccionarios con signo, de lo que se cumple:

2

0

11110 22

2

1 n

i

ii

nnn

aaN (1.12)

El rango de los fraccionarios con signo es el mismo que el de los números en complemento a dos

(definido en (1.9)), con la particularidad de que se calcula dividiendo entre el entero de mayor valor

absoluto que pueden representar, de ello resulta:

Page 29: Sistemas numericos

1 1

101 1

2 2 1

2 2

n n

n nN

que es equivalente a:

1

101 1 2n

N

(1.13)

Al aplicar (1.13) resulta que, el rango de números fraccionarios con signo representables en un byte es:

0.99218751 10 N

Con una diferencia entre un valor y otro de 1/2n-1

, que para 8 bits es 0.0078125.

El rango de números fraccionarios para una palabra (16 bits) es:

20.999969481 10 N

Con una diferencia entre un valor y otro de 0.0000305175.

De forma similar, el rango de números fraccionarios para una doble palabra es:

95340.999999991 10 N

Con una diferencia entre un valor y otro de 2.3283064e-10.

Ejemplo 1.18: Determine el valor que representa el número binario 10111100b

a-) Como entero sin signo.

b-) Como entero con signo.

c-) Como fraccionario sin signo.

d-) Como fraccionario con signo.

a-) Para determinar el entero sin signo se utiliza (1.4) y el resultado sería:

N10 = 128 + 32 + 16 + 8 + 4 = 188d

b-) Para determinar el entero con signo se utiliza (1.8) y el resultado sería:

N10 = -128 + 32 + 16 + 8 + 4 = -68d

c-) Para determinar el número fraccionario sin signo se utiliza (1.10) y el resultado sería:

N10 = 188/256 = 0.734375

Page 30: Sistemas numericos

d-) Para determinar el fraccionario con signo se utiliza (1.12) y el resultado sería:

N10 = -68/128 = -0.53125

Ejemplo 1.19: Determine el número binario que representa a 0.125d

a-) Como fraccionario sin signo.

b-) Como fraccionario con signo.

Respuesta:

a-) Como fraccionario sin signo, de aplicar (1.10) resulta:

7

0

i 2a32 (256) 0.125Di

i

Por tanto, como 32 = 00100000b, se puede afirmar que:

0.125 = 00100000b

compárese con el ejemplo con el resultado del ejemplo 1.7.

b-) Como fraccionario con signo, podemos aplicar (1.12):

2

i

0

0.125(128) 16 a 2n

i

i

Por lo tanto, como 16 = 00010000b, podemos afirmar:

0.125d = 00010000b

Nótese como el resultado ha sido el mismo que el apartado a), pero desplazado una unidad a la derecha

como era de esperar por la utilización del bit MSB como signo.

1.5.- Aritmética en las computadoras

Cuando se opera con números binarios ocurren algunos problemas, debido a la limitación en el tamaño de

los datos con que opera la computadora. La interpretación de los errores producidos por estos problemas

es tan importante que existen indicadores específicos para determinar los mismos en la unidad central de

procesamiento o microprocesador, núcleo de la computadora.

1.5.1- Errores en operaciones de números enteros sin signo

Como se ha definido en (1.7), existe un número límite que puede ser representado cuando se trabaja en

formato de datos de n bits. Si se produjera alguna operación cuyo resultado estuviese fuera de rango

establecido por dicho formato, se producirá un error.

Page 31: Sistemas numericos

Ejemplo 1.20: Realice la siguiente suma

10000000b 128d

+10000000b +128d

_____________ _____

100000000b 256d

Resultado en la computadora

Acarreo

Como puede apreciarse, se ha realizado la suma de dos operandos de 8 bits diferentes de cero. Como la

suma debe representarse en el mismo formato que los operandos (1 byte), se observa que ha ocurrido un

error, pues el resultado ha sido 0d = 00000000b.

El error ha ocurrido debido a que el resultado de la suma (256d) es un número mayor al máximo valor que

se puede representar en 1 byte (255d, de aplicar (1.7)).

Ejemplo 1.21: Realice la siguiente sustracción

1 Préstamo

MINUENDO 00000000b 0d

SUSTRAENDO -00000001b -1d

___________ ____

11111111b -1d

En este ejemplo, el sustraendo es mayor que el minuendo; por lo que se solicita un préstamo por parte de

este último a una posición binaria más significativa que la que soporta el formato de 8 bits para poder

ejecutar la operación. Este error se ha producido debido a que los enteros sin signo no admiten números

negativos, por lo que se ha producido un error (11111111b = 255d).

Este tipo de error puede evitarse tratando los datos en un formato que admita números negativos, como

puede ser el complemento a dos.

1.5.2.- Errores en operaciones de números enteros con signo.

Para operar con números negativos se utiliza la notación en complemento a dos.

Ejemplo 1.22: Realice la siguiente operación utilizando la notación complemento a dos

00000011b 3d

+ 11111110b +(-2)d

___________ _____

100000001b 1d

Acarreo (se descarta)

En este ejemplo, el bit más significativo del resultado se descarta, pues ha sobrepasado el formato de 8

bits, esto no introduce error (cuando es interpretado como complemento a dos) como puede apreciarse en

la operación decimal a la derecha.

Page 32: Sistemas numericos

Ejemplo 1.23: Realice la siguiente suma

11111110b (-2)d

+11111100b +(-4)d

____________ _____

111111010b -6d

Acarreo (se descarta)

En este caso se han sumado dos números negativos. Al igual que en el ejemplo 1.22, el acarreo se

descarta sin introducir error (compruébese determinando el complemento a dos).

Ejemplo 1.24: Realice la siguiente sustracción

8d Se suma en 00001000b

-5d complemento a dos +11111011b

_____ ____________

3d 100000011b

Acarreo (se descarta)

Al sustraendo se le determina el complemento a dos y se realiza la operación de suma. Esta operación

ilustra cómo pueden realizarse sustracciones a través de suma, pues A - B = A + (-B), siendo A y B los

operandos (de hecho, la operación básica a través de la cual la computadora realiza todos los cálculos es a

través de la suma).

Nótese como el bit más significativo del resultado de la operación es descartado sin introducir error.

Ejemplo 1.25: Realice la siguiente suma

01000000b 64d

+01000000b +64d

__________ ______

10000000b 128d

Los operandos son positivos, sin embargo el resultado ha dado negativo (el bit más significativo es 1); lo

que es incorrecto, pues la suma de dos números positivos es siempre positiva. Este error se produce

porque el resultado de la suma ha sobrepasado el rango de números que soporta el formato de 8 bits para

valores signados. Como se aprecia a la derecha, el resultado de la suma debe ser 128 siendo 127 el

número máximo del formato de datos especificado. A este tipo de error se le denomina sobresaturación

(overflow) y una forma de eliminarlo es aumentar el número de bits para representar la palabra de dato.

Ejemplo 1.26: Realice la siguiente suma

10000001 -127

+10000000 +(-128)

___________ _______

100000001b -255d

En este caso la suma de dos números negativos ha dado positivo (puesto que el bit MSB del formato de 8

bits es 0) lo que es incorrecto, pues la suma de dos números negativos será siempre negativa. Esto ocurre

Page 33: Sistemas numericos

porque el resultado de esta operación es –255d que sobrepasa al menor número negativo que admite un

byte (-127). En este caso, como en el ejemplo 1.25, ocurre el overflow.

Ejemplo 1.27: Realice la siguiente suma

01111111 127

+11111111 +(-1)

_________ _____

101111110b 126d

Acarreo (se descarta)

En esta operación se ha sumado un número positivo (el mayor que admite el formato de 8 bits) con uno

negativo (el mayor que admite el formato de datos de 8 bits), el resultado de la operación, una vez

descartado el acarreo, ha sido correcto.

Conclusión de las operaciones con signo

1.- Las computadoras realizan la suma en complemento a dos para realizar la sustracción, considerando

en la operación:

a-) La resta de un número positivo equivale a sumar un número negativo (ver ejemplo 1.24).

b-) La resta de un número negativo equivale a sumar un número positivo.

2.- Ocurre sobresaturación cuando el resultado es un valor fuera del rango especificado por el formato de

datos cuando se interpreta al mismo como entero con signo.

3.- La suma de un número negativo y un número positivo nunca produce sobresaturación.

1.6.- Representación de los números reales Hasta ahora se ha tratado como representar números enteros y números fraccionarios, pero no la

representación de ambos.

Existen problemas en que los operandos son enteros y el resultado fraccionario como puede ser una

división donde el dividendo sea menor que el divisor, por lo que un formato entero no resolvería el

problema.

Igualmente, si se trabajase con números fraccionarios y el dividendo es mayor que el divisor; el cociente

podría ser entero, por lo que el formato fraccionario no resolvería el problema.

En el trabajo científico y en aplicaciones de ingeniería se trabaja con números muy pequeños y muy

grandes, digamos en electrónica se manipulan magnitudes del orden de los Megaohm (106) y de los

Microampere (10-6

).

Evidentemente utilizando el escalado adecuado, podremos representar las cifras dentro del rango del

escalado en modo de coma fija. Pero esto conlleva algunas dificultades como:

Los productos y divisiones producen cambios de escala.

Page 34: Sistemas numericos

Si a priori no se conocen las magnitudes del resultado, difícilmente se puede utilizar el escalado

correcto sin que se produzcan errores o desbordamientos.

El escalado es propenso a equivocaciones.

Para resolver los problemas antes planteados se crea una forma de representación que será la combinación

de las formas de representar los números enteros y los números fraccionarios. A esta forma de

representación se le denomina notación exponencial (o también notación científica o notación en punto o

coma flotante), es interesante destacar que como en las formas entera y fraccionaria, el punto es

imaginario, por lo que realmente ningún punto flota. Se menciona como curiosidad que los primeros

computadoras utilizaban el sistema de representación en coma flotante, como Zuse y Stilbitz, sin embargo

J. Von Newman se declaró contrario a ello en el artículo “Preliminary discusion of the logical desing of a

electronic computing instrument” (1946) y quedó en desuso, pero pronto se recuperaría y hoy en día

prácticamente todos permiten trabajar en notación en coma flotante.

Un número como 309.25 se puede escribir en notación científica como 0.30925103, 0.03092510

4 etc.

Todos ellos están constituidos por una fracción multiplicada por una potencia de 10. De todas las formas

posibles de representar un número real (prácticamente depende de la imaginación del programador) se

trabajará con una que se ha dado en llamar forma normalizada de punto flotante, en esta el primer valor a

la derecha del punto debe ser desigual a cero, garantizando el menor valor del exponente.

La representación de los números reales en las computadoras se realiza de forma tal que la base se

considera única (en nuestro caso será 2) y se establece el exponente con el signo implícito, debido a ello

será necesario representar en la palabra de dato sólo tres elementos: el signo de la mantisa, el exponente y

la mantisa. El signo puede ser negativo o positivo, por lo que basta un sólo bit para representarlo (si el bit

es 0 será positivo y si es 1, negativo). Para representar la mantisa se pueden utilizar dos métodos:

mantisa entera y mantisa fraccionaria. Con la mantisa entera la fracción se encuentra a la derecha del

dígito menos significativo, pero cada vez se emplea menos la mantisa entera y se usa mas la mantisa

fracción, donde la coma depende del sistema de representación (vistos anteriormente: complemento a

uno, dos, signo-magnitud y sesgado). La mantisa fracción se emplea en el estándar IEEE 754, que es el

más utilizado hoy día, y que se tratará detalladamente mas adelante. La disposición de la mantisa, el signo

y el exponente se representan en la figura 1.11.

__ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __

|__|__|__|__|__|__|__|__| |__|__|__|__|__|__|__|__|

Exponente (E) Mantisa (M)

signado Punto imaginario

Signo de la mantisa (s).

Figura 1.11.- Formato para representar los números reales en la computadora (8 bits para la

mantisa , 7 para el exponente y 1 para el signo)

Todo número real N está caracterizado por:

a-) Un signo para la mantisa (s).

b-) Una mantisa (M).

c-) Un signo para el exponente.

Page 35: Sistemas numericos

d-) Un valor para el exponente (x).

e-) Una base (B).

Así todo número N puede ser representado de la siguiente manera:

N = MBx (1.14)

Si en una palabra de dato se pudieran representar estos 5 elementos, se está representando a un número

real.

La forma de representar el exponente no es en complemento a dos, sino de forma sesgada. Para ello se

tiene en cuenta lo siguiente:

Un exponente de e bits tendrá 2e posibles combinaciones distintas, de ellas el cero absoluto se representa

por la mitad del intervalo, es decir 2e/2

, debido a ello el valor del exponente será:

E = 2(e – 1)

+ x (1.15)

donde:

E: valor que toma el exponente en la palabra de dato.

x: valor decimal del exponente a representar.

Ejemplo 1.28: Represente, en un exponente de 7 bits (en el formato que se representa en la figura 1.12), los valores -3 y +25 Para el valor -3, aplicando (1.15):

E = 27-1

+ (-3)d = 64d – 3d = 61d = 0111101b

Por tanto –3d se representa en 7 bits como 0111101b.

Para el valor 25, aplicando (1.15):

E = 27-1

+ 25d = 64d + 25d = 89d = 1011001b

Por tanto el valor 25d se representa en 7 bits como 1011001b

Como se ha tomado como referencia la mitad del intervalo del exponente como cero, este corresponderá

con un valor cuyo bit MSB esté seteado, por lo que todos los valores positivos (que son mayores que

cero) mantendrán este bit en 1. Cuando el número es negativo (menor que cero) siempre tendrá el dígito

MSB en cero. Esta peculiaridad hace que se considere al bit MSB como el bit del signo, siendo su regla

contraria a la del signo de la mantisa, pues para x positivo el bit MSB es 1 y cuando es negativo, cero. Se

puede comprobar que para los números positivos los n - 1 bits (exceptuando el signo) menos

significativos representan directamente el valor de x. Con respecto a los números negativos, los n - 1 bits

(exceptuando el signo) representan el complemento a dos de x.

Page 36: Sistemas numericos

Ejemplo 1.29: Para el ejemplo 1.28 compruebe que los números positivos representan exactamente al número del exponente y los negativos el complemento a dos cuando se exceptúa el signo

El exponente para –3d es:

0111101b

El cual es un número negativo al ser el MSB 0, si exceptuamos el signo, el valor del exponente es:

111101

Si le determinamos el complemento a dos:

000010

+ 1

_________

000011b = 3d

Por tanto se ha comprobado que el exponente es el complemento a dos de 3, o sea -3.

Cuando el exponente es 25 se representa como:

1011001b

Si se exceptúa el signo:

011001b = 25d.

Por lo que representa exactamente a la magnitud del exponente x.

Se puede concluir en la representación del exponente:

a-) Cuando el exponente x es positivo, el dato en la computadora se representa como en el ejemplo (1.29)

para e bits, (donde “e” es el número de bits para el exponente), siendo el más significativo 1 y los

restantes el valor de x.

b-) Cuando el exponente x es negativo, el bit MSB es cero y en los restantes bits se representa el

complemento a dos de x.

Este tipo de representación del exponente hace que los negativos disminuyan hacia la izquierda y los

positivos crezcan hacia la derecha, esto provoca que un incremento en el dato provoque un incremento en

el exponente y viceversa.

0 64 127 Valores de E

___________ ___________

|___________|___________|

-64 0 +63 Valores de x

Figura 1.12.- Comportamiento de la información numérica para un exponente de 7 bits.

En el caso de la mantisa, esta se puede representar de forma entera o fraccionaria.

Page 37: Sistemas numericos

1.6.1.- Coma flotante con mantisa entera

En este tipo de sistema, la coma se encuentra a la derecha del bit menos significativo de la mantisa; por

ejemplo, el número3,312510 es equivalente a 11,01012, que se representaría de la siguiente manera:

3312510-4

10 y 1101012-4

2

Considerando lo anterior, el rango positivo de representación será, para una base B = 2, (que es implícita):

El menor número positivo estará afectado por la menor mantisa y el menor exponente:

la menor mantisa, considerándola entera positiva, es:

000...001 = 1

y el menor exponente, cuyo valor real, suponiendo que está expresado en exceso, aplicando (1.15)

será:

x = E – 2(e – 1)

= -2(e – 1)

donde E = 000...000

por tanto el menor número positivo representable es:

1 2exp(-2(e – 1)

)

El mayor número positivo estará afectado por la mayor mantisa y el mayor exponente:

La mayor mantisa (incluyendo el signo) será, (y esto es válido para los tres sistemas de

representación: signo magnitud, complemento a uno y a dos):

M = 011...111 = 2(m – 1)

– 1

donde m es el número de bits para la mantisa.

El mayor exponente (E) es:

E = 111...111 = 2e – 1

Es necesario destacar que el exponente suele representarse de forma sesgada, lo que permite

representar exponentes negativos (sin reservar explícitamente un bit de signo), entonces el mayor

exponente (x) (aplicando (1.15)) es:

x = 2(e – 1)

– 1.

De lo anterior resulta que el mayor número positivo representable es:

(2(m – 1)

– 1) 2exp(2(e – 1)

– 1)

El rango negativo de representación, siempre hablando en términos de valor absoluto, cumple los

siguientes requisitos:

Page 38: Sistemas numericos

El menor negativo será la menor mantisa negativa (-1, al ser entera), afectada por el menor

exponente:

E = 000...000

donde x, si está representado de forma sesgada., responde a (aplicando (1.15)):

x = E – 2(e – 1)

= -2(e– 1)

en términos de valor absoluto representable, el menor negativo resulta ( de (1.14)):

-2[exp (-2(e – 1)

)]

El negativo de mayor valor tendrá la mayor mantisa y el mayor exponente, en este caso la mantisa

tendrá dos valores máximos, uno para el complemento a dos, otro para el complemento a uno y signo

magnitud, de esta forma el número se representa por:

– C2[exp(2(e – 1)

– 1)]

donde:

C = 2(m – 1)

– 1 para complemento a uno y signo magnitud.

C = 2(m – 1)

para el complemento a dos (recuérdese que el complemento a dos representa un número

negativo mas al tener una sola representación para el cero).

Aunque se puede representar la mantisa de tipo entera, se utiliza más la mantisa de tipo fracción.

1.6.2.- Coma flotante con mantisa fracción

En este caso se utiliza la mantisa fraccionaria, que es lo mismo que dividir por 2 (m – 1)

, haciendo que el

valor máximo de la mantisa sea 1.

Si se utilizan m bits para la mantisa, el rango de valores que esta puede representar es:

1 1 2 mMantisa (1.16)

Nótese que esta ecuación es en esencia igual a (1.13) (representa el rango de números fraccionarios con

signo), esto es debido a que al unir el bit del signo con la mantisa (que tiene el mismo significado que el

complemento a dos), se obtiene el mismo formato del número fraccionario con signo (de hecho la mantisa

es un número fraccionario con signo, cuyo bit del signo está separado y colocado junto al exponente).

El rango que puede representar un exponente viene dado por (ver fig. 1.12, para un exponente de 7 bits):

– 2(e – 1)

x 2(e – 1)

– 1 (1.17)

Ejemplo 1.30: Represente el valor 12.25 en formato de 7 bits

Los pasos para obtener los valores del signo, mantisa y exponente son:

Page 39: Sistemas numericos

a-) Dividir el número por la primera potencia de dos que lo supera y multiplicarlo para no alterar su valor.

12.25

12.25 = --------- 24 = 0.765625 2

4

16

Con esta operación se ha logrado transformar el número en una mantisa multiplicada por una potencia de

dos. El dividirse por la primera potencia de dos que lo supera garantiza el valor mínimo del exponente.

b-) Convertir a binario la mantisa.

Primero se convierte a octal.

0.765625 8 = 6.125 p1 = 6

0.125 8 = 1.00 p2 = 1

0.00 8 = 0.00 p3 = 0

Siendo la mantisa:

M = p1 p2 p3 = 610o = 110001000b

Considerando solo las 8 primeras cifras (se descartan los menos significativos):

M = 11000100

Como la mantisa es positiva, el bit del signo de la misma en formato binario es cero (recuérdese que ella

se representa en complemento a dos).

c-) Como el exponente es positivo (su valor es 4), entonces el bit más significativo del exponente es 1 y

los restantes seis bits representarán el 4 (000100b).

Por tanto, el valor 12.25 se representará en la computadora como:

01000100 11000100

Exponente Mantisa

Signo de la Mantisa

Ejemplo 1.31: Determine el valor decimal que representa el siguiente dato real

01000100 11000100

Exponente Mantisa

Signo de la Mantisa.

El valor de la mantisa es (incluyendo el signo):

011000100

Page 40: Sistemas numericos

Como es una fracción con signo, al aplicar (1.12) resulta:

7

8

880

12 2

2

i

i

i

M a a

M = (128 + 64 + 4)/256 = 0.765625

El exponente es positivo (su bit MSB es 1), por lo que los restantes bits representan directamente el

exponente que es:

000100b = 4d = x

Por tanto, el valor que se representa es:

0.765625 24 = 12.25

Nótese como esta solución coincide con el valor original en el ejemplo 1.30.

1.6.2.1.- La normalización

Como se puede apreciar en los ejemplos anteriores, la mantisa se expresa como una fracción, lo cual está

acorde con el uso común que se le da a la notación científica (donde 0.47e+4 es utilizado como forma

"normal" de notación y no 47e+2) donde la mantisa decimal pertenece al intervalo 0.1 a 0.999... 9. De

manera similar la mantisa binaria se encuentra en el rango de 0.100..0 a 0.111..1. En la mayoría de las

computadoras, la mantisa se mantiene en forma normal, continuamente ajustando la misma de manera tal

que el dígito más significativo (consecutivo al signo) sea siempre 1. A esto se denomina normalización, y

consiste en eliminar todos los dígitos nulos a la derecha de la coma y ajustar el exponente.

Ejemplo 1.32: Representar el número 2.0234375 normalizado, utilizando la mantisa de tipo fracción

El primer paso es dividir y multiplicar por 22, que garantiza una mantisa fraccionaria y un exponente

basado en potencia de dos:

(2.0234375/22) 2

2 = 0.505859375 2

2

El resultado de convertir la mantisa a binario, utilizando el sistema octal como intermediario es

equivalente a:

0.505859375 8 = 4.046875 p1 = 4

0.046875 8 = 0.375 p2 = 0

0.375 8 = 3 p3 = 3

que transformado a binario es:

403o = 100000011b = M

Nótese como el primer número de la mantisa es 1, por lo que ya está normalizado.

Page 41: Sistemas numericos

Para el exponente E, se aplica (1.15), para e = 7 bits y x = 2:

E = 2(e – 1)

+ x = 66d = 1000010b

Por lo tanto el número real en binario queda representado por:

0 1000010 100000011

Mantisa

Exponente

Signo de la Mantisa

Ejemplo 1.33: Representar el número 0.1328125 26 Como se parte de un número ya está en base dos, se convierte la mantisa a binario, mediante el sistema

octal:

0.1328125 8 = 1.0625 p1 = 1

0.0625 8 = 0.5 p2 = 0

0.5 8 = 4 p3 = 4

donde 104o = 001000100b, entonces el número sería, (despreciando los dos últimos ceros):

0.0010001 26

El próximo paso es normalizar la mantisa para que el MSB sea 1, por lo que se rota el punto decimal dos

posiciones a la derecha (equivalente a rotar el número binario a la izquierda), y el valor del exponente se

decrementa en dos, de lo que resulta:

0.10001 24

que se representa de la siguiente manera (para e = 7 bits):

s = 0; M = 10001 y E = 2(e – 1)

+ x = 68d = 1000100b

0 1000100 1000100

Mantisa

Exponente

Signo de la Mantisa

Otra posible solución para el problema del ejemplo es representar la equivalencia:

0.1328125 26 = 8.5

Page 42: Sistemas numericos

multiplicando y dividiendo por 24, garantiza la mayor mantisa fraccionaria, por lo tanto ya estará

normalizada:

(8.5 / 24) 2

4 = 0.53125 2

4

Convirtiendo el número a binario mediante el sistema octal:

0. 53125 8 = 4.25 p1 = 4

0.25 8 = 2 p2 = 2

42o = 100010b

el exponente sería, para e = 7 bits:

E = 2(e – 1)

+ x = 68d = 1000100b

y el número quedaría representado de la siguiente forma:

0 1000100 10001

Mantisa

Exponente

Signo de la Mantisa

Nótese como este último método evita el tener que ajustar el exponente.

1.7.- La aritmética en números reales

Los pasos para realizar las operaciones aritméticas elementales se describen a continuación.

Pasos generales para realizar las operaciones de suma y sustracción:

Antes de sumar y restar hay que lograr que ambos números con los que se opere tengan igual exponente:

1.- Comparar los exponentes, si son iguales no se requiere acción alguna.

2.- Seleccionar el número de menor exponente.

3.- Desplazar su mantisa a la derecha el número de lugares que corresponda a la diferencia de los

exponentes.

4.-Después de la suma o resta de las mantisas, el resultado toma el exponente mayor.

Ejemplo 1.34: Realice la siguiente operación

[5.25 102 – 50]

Page 43: Sistemas numericos

Los pasos para representar en punto flotante son:

1) Se convierten los valores a exponente base 2 (dividiendo y multiplicando por la potencia de dos más

próxima que supera al número). En nuestro caso:

525 = (525/210

) 210

= 0.5126953125 210

= N1

50 = (50/26) 2

6 = 0.78125 2

6 = N2

2) Se representan los datos en binario.

En este paso, se debe conocer el número de bits que serán usados para representar la mantisa. Para este

ejemplo, serán utilizados 11 bits (uno para el signo y diez para el dato).

a) Para calcular la mantisa, se utiliza el sistema octal como intermediario (incluyendo al signo):

0.5126953125 8 = 4.1015625 4

0.1015625 8 = 0.8125 0

0.8125 8 = 6.5 6

0.5 8 = 4 4

por lo tanto se representa 40648, cuyo equivalente en binario es (con el primer bit de signo):

M1 = (0) 1000001101b

de forma similar, para N2 se cumple:

0.78125 8 = 6.25 6

0.25 8 = 2 2

por lo tanto, m2 será 628, que en binario y con el bit de signo, es equivalente a:

M2 = (0) 1100100000b

b) Exponente:

Para la representación de un exponente de 7 bits, aplicando (1.15):

E = 2 (e – 1)

+ x

de lo anterior resulta:

E1 = 64d +10d =74d = 1001010b

de igual forma:

E2 = 64d + 6d= 70d = 1000110b

ambos números quedarían representados de la siguiente forma:

Page 44: Sistemas numericos

s E M

N1 0 1001010 1000001101

N2 0 1000110 1100100000

3) Se realiza el ajuste para la operación.

Para sustraer N1 - N2 hay que convertir los números a igual base, rotando a la derecha la mantisa (colocar

ceros a la derecha del punto), lo cual corresponde con incrementos en el exponente.

Convirtiendo el exponente 6 de N2 a exponente 10 (rotar cuatro veces) y adicionar 4 a E2, resulta:

N2 = 0 (1001010) 0000110010

como se cumple:

M1 bE

– M2 bE = (M1 – M2) b

E

entonces:

s s

N1 - N2 = [(01000001101b) - (00000110010b)] 21001010b

N1 - N2 = 00111011011b 21001010b

El resultado sería:

s E M

0 (1001010) (0111011011)

Comprobación:

525d – 50d = 475d

dividiendo entre la mayor potencia de dos que lo supera:

475 29/2

9 = 0.927734375 2

9

De utilizar el sistema octal como intermediario para convertirlo a binario resulta:

0.927734375 8 = 7.421875 7

0.421875 8 = 3.375 3

0.375 8 = 3 3

7338 es equivalente a 1110110110b (el último cero se incorpora para completar los diez bits),

convirtiendo al mismo exponente de los otros dos números:

s E M

N3 = 0 (1001010) (0111011011)

Page 45: Sistemas numericos

Como puede comprobarse, equivalente al resultado anterior.

Nótese como el resultado es exacto, lo que depende de cuantas cifras se tomen para la mantisa. En este

caso se han tomado 11, pero si se hubiesen tomado 10, el resultado sería inexacto pero bastante

aproximado. En la medida en que más cifras se tomen, menor será el error en el resultado. Al

programador le corresponde elegir el número de cifras acorde con los datos a representar.

Operaciones de multiplicación y división

Como se ha podido apreciar, para tratar números en flotante, este debe poseer facilidad de rotación y

comparación de valores. Las reglas para la multiplicación y división son:

(a rp) (b r

q) = a b r

p+q

(a rp) / (b r

q) = a / b r

p-q

Se deben ejecutar operaciones de suma y sustracción de la sección que corresponde al exponente, así

como realizar la multiplicación y división en la mantisa. La precisión debe mantenerse rotando la mantisa

hasta que el bit MSB sea 1. Con cada rotación (a la izquierda) el exponente debe decrementarse.

Ejemplo 1.35: Realice la siguiente operación

[(5.25 102 ) (50)]

Los dos números anteriores están representados en el ejemplo 1.34:

s E M

N1 0 1001010 1000001101 0.5126953125 210

N2 0 1000110 1100100000 0.78125 26

siendo N1 = 5.25 102 y N2 = 50.

El producto de ambos equivale a:

0.1000001101 210

0.11001 26

1000001101

0000000000

0000000000

1000001101

1000001101

0.011001101000101 2(10 + 6)

Como puede observarse en la segunda y tercera fila, los resultados parciales son cero, lo que equivale a

que la cuarta y quinta fila se desplacen a la izquierda una posición por cada fila nula. Entonces se suman

todas las filas y es muy probable que el número de bits del resultado sea diferente al número de bits de la

mantisa de cada número.

Como resultado de normalizar resulta:

Page 46: Sistemas numericos

0.11001101000101 215

que al aplicar la expresión (1.12) es equivalente a:

0.80108642578125 215

= 26250d

calculando el exponente E, para e = 7 bits:

E = 2 (e – 1)

+ x = 79d = 1001111b

El número representado sería:

N = (0) 1001111 11001101000101

Mantisa (M)

Exponente (E)

Signo (s)

Comprobación:

[(5.25 102 ) (50)] = 262.5 10

2 = 26250d

multiplicando y dividiendo entre la mayor potencia de dos que lo supera:

(26250 / 215

) 215

= 0.80108642578125 215

Nótese que en la multiplicación pueden necesitarse un número diferente de bits para definir la mantisa (y

el exponente si sobrepasa el rango del mismo), como máximo hasta la suma de los dos números de bits de

cada mantisa (m1 + m2).

Ejemplo 1.36: Hacer la siguiente operación

[(5.25 102 ) / (50)]

Como resultado de convertir a formato binario resulta:

5.25 102 = 0.1000001101 2

10 y 50 = 0.11001 2

6

dividiendo las dos mantisas y restando los exponentes:

1000001101 11001

011001

00011111 0.10101 210

/ 26 = 2

(10 – 6) = 2

4, donde x = 4

11001

0011001 Cociente

11001

00000 Resto

Page 47: Sistemas numericos

La operación realizada es la siguiente: primero el cociente es 0, por que se han tomado las seis primeras

cifras del dividendo, al ser estas menores que las del divisor; entonces se coloca un uno y el divisor se

resta a estas seis cifras. Posteriormente se baja otra cifra y como es menor se vuelve a bajar otra cifra

poniéndose otro cero en el cociente, así hasta llegar hasta el resto final que es 0.

Calculando el exponente E, para e = 7 bits, aplicando (1.15):

E = 2(e – 1)

+ x = 68d = 1000100b

De lo anterior resulta que el cociente, que es el número que se pretende representar sería:

s E M

N = (0) 1000100 10101

Comprobación:

5.25 102 / 50 = 10.5

multiplicando y dividiendo por el mayor exponente base dos que le supera:

(10.5 / 24) 2

4 = 0.65625 2

4

Convirtiendo la mantisa a binario, utilizando el sistema octal como intermediario:

0.65625 8 = 5.25 p1 = 5

0.25 8 = 2 p2 = 2

donde 52o = 101010b (se desprecia el último cero) y el número representado sería:

E = 2(e – 1)

+ x = 68d = 1000100b

s E M

N = (0) 1000100 10101

Con lo que se comprueba el resultado.

Las combinaciones básicas para representar datos en formato en punto flotante se muestran en la

tabla 1.13.

No de octetos Bits en el exponente Bits en la mantisa Precisión dígitos

decimales

7

6

2

4

8

9

5

11

2

10

3

3

3

7

6

3

4

16

17

5

19

4

5

18

5

5

Tabla 1.13.- Combinaciones básicas para representar datos en formato coma flotante

Page 48: Sistemas numericos

1.8.- Representación en coma flotante utilizando el estándar IEEE 754

El IEEE 754 es un estándar de representación de números reales en coma flotante. Lo que trata de

representar es un número de la siguiente forma, N = MBx, siendo x entero. La base del exponente es 2 y

está predeterminada, por lo que habrá que determinar M y E ( representación binaria de x) con su signo.

Este estándar no sólo cubre los operandos sino también la forma de realizar las operaciones, ya que estos

operandos sufren una transformación, memorizándose realmente lo que se denomina campo del signo (s),

campo del exponente (e) y campo de la mantisa (m). Por lo anterior, es necesario representar un bit de

signo s, un número fijo de bits e para el exponente y otro m para almacenar la mantisa.

El número de bits total n para representar un número en coma flotante es:

n = 1 + e + m (1.18)

donde el número en formato binario se representa en la figura 1.13.

Bit implícito para la mantisa normalizada

__ __ __ __ __ ____ __ __ __ __ __ __ __ __ __ __

|__|__|__|__|__|__|__|__|__| 1 |__|__|__|__|__|__|__|__|

Exponente (E) Mantisa (M)

signado Punto imaginario

Signo de la mantisa (s).

Figura 1.13.- Representación de un número ( e=8, m=8) utilizando el estándar IEEE 754

Los componentes del formato IEEE 754 se caracteriza por:

Campo de signo: Lo constituye un bit para el signo ( cero para positivo y uno para negativo). Alterando

este bit, se altera el signo.

Campo del exponente: Es un dato de la forma entero sesgado, es decir el campo del exponente se obtiene

al sumar x + S, donde x es el valor decimal del exponente a representar y S en un sesgo, cuyo valor es

constante (de esta forma se pueden incluir exponentes positivos y negativos):

S = 2(e – 1)

– 1 (1.19)

Es importante destacar que la mayoría de los otros formatos utilizan como sesgo una unidad mayor, es

decir: S = 2(e – 1)

, tal y como se utiliza en la expresión (1.15).

Campo de la mantisa: Se emplea una mantisa fraccionaria y normalizada, de tal forma que el primer bit,

el más significativo, es implícito e igual a 1. La anterior consideración provoca que el rango de

representación de la mantisa se extienda en el siguiente intervalo:

1 M < 2 (1.20)

El uno considerado implícito para la mantisa ( que está ubicado a la izquierda del punto fraccionario del

exponente, tal y como muestra la fig. 1.14) no se almacena, por lo que la ALU (Unidad Aritmética

Lógica), deberá restituirlo cuando tenga que operar con él. Esta normalización se hace para no ir

Page 49: Sistemas numericos

perdiendo precisión en operaciones sucesivas, de forma que las cifras más significativas ocupen el mayor

peso, por lo que habrá que reajustar el exponente. Por lo tanto el valor de la mantisa será desde 1,00000....

hasta 1,11111..11 (en binario).

Indicadores especiales:

E = 255 y M 0: representa un “No a Number”, es decir, un número no válido. Se emplea para

indicar un resultado sin sentido (por ejemplo 0/0, 0, etc.).

E = 255 y M = 0: representa según el bit de signo s.

El número 0 se representa como E = 0 y M = 0 (existe cero positivo y negativo, dependiendo del valor

de s).

Cuando el exponente posee el valor 0, el 1 más significativo de la mantisa no viene implícito, el cual

permite atender el caso de ausencia de representación en coma flotante con mantisa normalizada. En

este caso se dice que la mantisa está denormalizada y el valor del sesgo es 2(e – 1)

– 2. De tal forma que

se representan números de la siguiente forma: (-1)s 2

-126 0.M para el sistema de representación

simple, obteniéndose 223

representaciones con separación uniforme en el intervalo [0, 2-126

]. En el

caso de un sistema en doble precisión (252

posibles combinaciones en el intervalo [0, 2-1022

]) la

representación de los números se hace de la forma: (-1)s 2

-1022 0.M . La mantisa M denormalizada

puede tomar valores entre 0.11...11 y 0. 00...01.

Ejemplo 1.37: Suponiendo n = 32 bits, e = 8 bits y m = 23 bits ( formato de almacenamiento en simple precisión), determine el valor de las siguientes representaciones

(a) 0 10000000 00000000000000000000000

En este caso:

s=0, E=128 (como E0 el número es normalizado) y M=0; por lo que se cumple:

( ) 1( 1) 1. [2 ] 1(1.0)2 2s E SM

Nótese que S=127, de aplicar (1.19) para e=8.

(b) 0 10000001 10100000000000000000000

En este caso:

s=0, E=129 y M=2-1

+2-3

=0.5+0.125=0.625; por lo que se cumple:

( ) 2( 1) 1. [2 ] 1(1.625)2 6.5s E SM

(c) 1 10000001 10100000000000000000000

En este caso:

s=1, E=129 y M=2-1

+2-3

=0.5+0.125=0.625; por lo que se cumple:

Page 50: Sistemas numericos

( ) 2( 1) 1. [2 ] 1(1.625)2 6.5s E SM

(d) 0 00000001 00000000000000000000000

En este caso:

s=0, E=1 y M=0; por lo que se cumple:

( ) 126 38( 1) 1. [2 ] 1(1.0)2 1.17 10s E SM

(e) 0 00000000 10000000000000000000000

En este caso:

s=0, E=0 ( el número es denormalizado por esta condición) y M=2-1

=0.5; por lo que se cumple:

126 126 127( 1) 0. [2 ] 1(0.5)2 2s M

(f) 0 00000000 00000000000000000000001

En este caso:

s=0, E=0 y M=2-23

; por lo que se cumple:

23 126 149( 1) (0 2 )(2 ) 2s

(g) 0 11111111 00100000000000000000000

Es equivalente a “número no válido” (NaN). Nótese que E=255.

(h) 1 11111111 10000000000000000000000

Es equivalente a “número no válido” (NaN).

(i) 0 11111111 00000000000000000000000

Es equivalente a infinito positivo (+).

(j) 1 11111111 00000000000000000000000

Es equivalente a infinito negativo (-).

(k) 0 00000000 00000000000000000000000

Es equivalente a cero positivo (+0).

(l) 1 00000000 00000000000000000000000

Es equivalente a cero negativo (-0).

Page 51: Sistemas numericos

Rangos en la representación:

Los valores máximos y mínimos representables en este tipo de formato, en términos del valor absoluto,

serán:

I.- Valor absoluto del número mayor: Este estará afectado por:

(a) La mayor mantisa, es decir 1.11...11:

Mmáx = 2 – 2-m

(b) El mayor exponente:

Emáx = 2S = 2e – 2

Entonces el número mayor, en términos de valor absoluto, será :

N = Mmáx 2Emáx

II.- Valor absoluto del número menor: Este quedará afectado por:

(a) La menor mantisa normalizada (1.00...00) o denormalizada (0.00...01):

Mmín_nor = 1

Mmín_denor = 2-m

(b) El menor exponente normalizado (E=1) y denormalizado (E = 0):

Emín_nor = E – S = 1 - 2(e – 1)

– 1= 2(e – 1)

– 2

Emín_denor = 2(e – 1)

– 2

Considerando lo anterior, el menor número en términos de valor absoluto será:

Nmín_nor = Mmín_nor 2Emín_nor

Nmín_denor = Mmín_denor 2Emín_den

En la tabla 1.14 se muestran los números mínimos y máximos representables para la precisión simple y

doble. La tabla 1.15 representa los valores dependientes de la precisión.

Mínimo número

Máximo número

Precisión Normalizado Denormalizado

Simple 2-126

1.17510-38

2

-232

-1261.40110

-45 (2-2

-23)2

1273.40310

38 2

-23 1.192 10

-7

Doble 2-1022

2.225 10-308

2-522

-1022

4.941 10-324

(2-2-52

) 21023

1.79810308

2-53 1.110 10

-16

Tabla 1.14.- Números mínimos y máximos representables para la precisión simple y doble

Page 52: Sistemas numericos

Si se analiza el formato de simple precisión existen cinco rangos numéricos que no se pueden representar,

ellos son:

1.- Números negativos menores a –(2-2-23

)2127

(desbordamiento negativo al máximo u overflow).

2.- Números negativos mayores a –2-149

(desbordamiento negativo al mínimo o underflow).

3.- Cero.

S = Sesgo ( ver expresion (1.19))

Signo Exponente (E) Mantisa (M) Valor

0 00..00 00..00 +0

0 00..00

00..01

:

11..11

Real denormalizado positivo

0.M x 2(-S+1)

0

00..01

:

11..10

XX..XX Real normalizado positivo

1.M x 2(E-S)

0 11..11 00..00 +Infinito

0 11..11

00..01

:

11..11

NaN

1 00..00 00..00 -0

1 00..00

00..01

:

11..11

Real denormalizado negativo

-0.M x 2(-S+1)

1

00..01

:

11..10

XX..XX Real normalizado negativo

-1.M x 2(E-S)

1 11..11 00..00 -Infinito

1 11..11

00..01

:

01..11

NaN

1 11..11 10..00 Indeterminado

1 11..11

10..01

:

11.11

NaN

Tabla 1.15.- Números representados por el formato binario

Page 53: Sistemas numericos

4.- Números positivos menores a 2-149

(desbordamiento positivo al mínimo o underflow).

5.- Números positivos mayores a (2-2-23

)2127

(desbordamiento positivo al máximo u overflow).

El desbordamiento al máximo significa que los números crecen por encima de un valor en que no es

posible representarlos. De forma similar, el desbordamiento al mínimo no se puede representar, pero este

es un problema menor en la medida en que se puede considerar una proximidad al cero.

Nótese que los valores extremos ocurren ( independientemente del signo) cuando el exponente alcanza su

máximo valor para números finitos ( 2127

para simple precisión) y la mantisa tiene todos sus bits en 1

(incluyendo el bit 1 de la normalización).

El estándar IEEE 754 considera cuatro formatos básicos: el de simple precisión, simple precisión

ampliada, doble precisión y doble precisión ampliada ( se eqpecificará aquí la simple y doble precisión).

Los diferentes formatos se diferencian en el número de bits del exponente y de la mantisa. Para el de

simple precisión e = 8 y m = 23, haciendo un total de bits n = 32 (incluyendo el signo), y la doble utiliza e

= 11 y m = 52, haciendo un total de bits n = 64 (incluyendo el signo). Es evidente que al tener un mayor

número de bits también se tiene mayor precisión a la hora de representar un número.

a-) Simple precisión:

Utiliza n = 32 bits, (e = 8 bits, m = 23 y el bit de signo). El sesgo S que hay que sumar es (aplicando

(1.19)) S = 127. Tiene las siguientes características:

- E = 255 y M 0, N no representa un número, (NaN)

- E = 255 y M = 0, N = (-1)s , (valores especiales)

- 0 < E < 255, N = (-1)s 2

E – 127 [1.M], (número normalizado)

- E = 0 y M 0, N = (-1)s 2

–126 [0.M], (número denormalizado)

- E = 0 y M = 0, N = (-1)s 0, (valor cero)

b-) Doble precisión:

Utiliza n = 64 bits, (e = 11 bits, m = 52 y el bit de signo). El sesgo S que hay que sumar es (aplicando

(1.19)) S = 1023. Tiene las siguientes características:

- E = 2047 y M 0, N no representa un número, (NaN)

- E = 2047 y M = 0, N = (-1)s , (valores especiales)

- 0 < E < 2047, N = (-1)s 2

E – 1023 [1.M], (número normalizado)

- E = 0 y M 0, N = (-1)s 2

–1022 [0.M], (número denormalizado)

- E = 0 y M = 0, N = (-1)s 0, (valor cero)

En la tabla 1.16 se muestran los bits de precisión, exponentes máximos y mínimos y el sesgo del

exponente.

En la tabla 1.17 se muestra como se almacena los datos de tipo real en el estándar IEEE 754, para simple

y doble precisión con palabras de 16 bits.

Page 54: Sistemas numericos

Precisión

Simple Doble

m 23 52

Emáx 127 1023

Emín -126 -1022

Sesgo (S) 127 1023

Tabla 1.16.- Características de la precisión simple y doble

Simple precisión

s Exponente (8 bits) Mantisa (7 bits)

Mantisa (16 bits)

Doble precisión

s Exponente (8 bits) Mantisa (7 bits)

Mantisa (16 bits)

Mantisa (16 bits)

Mantisa (16 bits)

Tabla 1.17.- Almacenamiento de datos de tipo real para simple y doble precisión en palabras de 16

bits

Ejemplo 1.38: Obtener la representación del número N = -273.2 105 según la norma IEEE 754, para datos en simple precisión Como es simple precisión entonces n = 32, e = 8, m = 23 y B = 2. Los pasos para realizar la conversión

son los siguientes:

(a) Se determina el número de cifras hexadecimales para la mantisa.

mh = m/4 = 5.75 6 cifras hexadecimales, pero conviene obtener ocho cifras para redondear y truncar.

(b) Se normaliza el número para que posea cero en la parte entera ( mantisa fraccionaria).

Esta conversión permite simplificar el método de conversión, utilizando sucesivas multiplicaciones por la

base ( en este caso se utilizará base 16, hexadecimal).

N = -273.2 105= -0.2732 10

8

(c) Se convierte el exponente de base 10 a base 2.

Para realizar este paso, se considera la siguiente equivalencia:

)2log(

)10log()2log()10log(210

dxxdxd (1.21)

Page 55: Sistemas numericos

De aplicar la anterior expresión para el ejemplo resulta:

57542476.26301029995.0/8)2log(

)10log(8x

Por tanto la conversión de base 10 a base 2 equivale a:

-0.2732 108 = -0.2732 2

26.57542476

(d) Se convierte el exponente base 2 a un número entero.

Este paso es evidente, en la medida en que el exponente se representa como entero con determinado

sesgo.

Operando, resulta:

-0.2732 1026.57542476

= -0.2732 20.57542476

226

= -0.407099724 226

(e) Se convierte la mantisa a hexadecimal.

0.407099724 16 = 6.513595584 6H

0.513595584 16 = 8.217529344 8H

0.217529344 16 = 3.480469504 3H

0.480469504 16 = 7.687512064 7H

0.687512064 16 = 11.00019302 BH

0.00019302 16 = 0.003088384 0H

0.003088384 16 = 0.049414144 0H

El número con mantisa fraccionaria responde a:

-0.407099724 226

= -0.6837B00H 226

(f) Se realiza la normalización y el redondeo de la mantisa.

El equivalente binario de la mantisa es:

-0. 0110 1000 0011 0111 1011 0000 0000 226

Al normalizar, resulta:

-1. 1010 0000 1101 1110 1100 0000 00 224

Como las últimas tres cifras binarias es inferior a 100, resulta:

-1. 1010 0000 1101 1110 1100 000 224

(g) Se realiza la representación del exponente.

Page 56: Sistemas numericos

Como e=8, el sesgo es 127, por tanto:

E = x + S = 24+127 = 151d = 10010111b

(h) Se determina el signo.

Como el número es negativo, entonces s=1.

El número se representaría en formato IEEE 754 de la siguiente forma:

Signo exponente mantisa

1 10010111 1010 0000 1101 1110 1100 000

Comprobación:

Aplicando la conversión binaria a flotante resulta:

27320000

)22222222221(2)1(.12)1( 18171514131210931)127151(1)(

MSEs

1.9.- Sistemas de codificación

Como se ha señalado, los sistemas de codificación brindan determinado significado a los bits para que

sean interpretados, lo cual permite materializar la interfaz hombre-máquina.

1.9.1.- El código BCD

El código BCD (del inglés Binary Coded Decimal o decimal codificado en binario) es un código especial

utilizado en los equipos digitales en los que es común la entrada y la salida de números en notación

decimal, este código permite reunir la simplicidad y la fiabilidad de los circuitos electrónicos (a través del

sistema binario) con la comodidad del sistema decimal.

Existen códigos tales como el BCD 5421, Exceso 3 y BCD 8421, el código más comúnmente utilizado es

este último.

En el código BCD 8421 se codifican las diez primeras combinaciones del código binario de 4 bits (que

son las mismas diez primeras combinaciones del sistema hexadecimal) y que se representan en la tabla

1.18. El nombre de 8421 proviene del peso de cada cifra dentro del código.

La transformación de decimal a BCD y viceversa es semejante a la decimal-octal ó decimal-hexadecimal.

De hecho el código BCD es un subconjunto del código hexadecimal, por lo que se sustituye el código

decimal por la cuarteta binaria equivalente y viceversa. Un número decimal de n cifras tendrá 4n bits.

Ejemplo 1.39: Determine el equivalente BCD del número10011011010010001b

Page 57: Sistemas numericos

DECIMAL BCD 8421

0 0000

1 0001

2 0010

3 0011

4 0100

5 0101

6 0110

7 0111

8 1000

9 1001

Tabla 1.18.- Equivalencia Decimal - BCD 8421

Agrupando cada cuarteta de derecha a izquierda y sustituyéndola por el respectivo valor que muestra la

tabla 1.18, resulta:

0001b = 1bcd, 1001b = 9bcd, 0110b = 6bcd, 0011b =3bcd y 1b = 1bcd

Se puede afirmar entonces que existe la siguiente equivalencia:

10011011010010001b = 13691bcd

Ejemplo 1.40: Determine el equivalente binario del siguiente número en BCD 57092bcd

Sustituyendo de derecha a izquierda cada cifra por su equivalente binario:

2bcd = 0010b, 9bcd = 1001b, 0bcd = 0000b, 7bcd = 0111b y 5bcd = 0101b

Se puede afirmar entonces:

57092bcd = 01010111000010010010b

1.9.2.- La aritmética en BCD

Para efectuar operaciones decimales sobre números en código BCD es necesario tener en cuenta algunas

particularidades de esta codificación.

Ejemplo 1.41: Realice la suma que se muestra a continuación

25d 00100101bcd 25d

+ 56d +01010110bcd + 56d

______ ______________ ____

81d 01111011bcd 7Xd

Nótese como el resultado de la operación decimal no es igual a la realizada en BCD a la derecha, debido a

que la cifra menos significativa es un código fuera de las 10 primeras combinaciones de 4 bits.

La dificultad surge del hecho de que de las 16 primeras combinaciones que existen en una cuarteta

binaria, sólo se utilizan 10 en el código BCD. Este error sucederá siempre que se obtenga como resultado

Page 58: Sistemas numericos

de la suma de una cuarteta de bits alguna de las combinaciones prohibidas en el código BCD:

1010,1011,1100,1101,1110,1111.

Para corregir los errores que ocurren en las operaciones en BCD se debe realizar el siguiente ajuste:

Siempre que como resultado de la suma binaria de una cuarteta se obtenga una combinación prohibida, se

corregirá el código prohibido adicionándosele 6d, implementando un acarreo a la cifra siguiente.

La solución del ejemplo sería:

25d 00100101bcd 25d

+56d +01010110bcd +56d

______ ______________

81d 01111011bcd

+ 0110bcd

______________ ____

10000001bcd 81d

Ejemplo 1.42: Realice la suma que se muestra a continuación 28d 00101000bcd 28d

+49d +01001001bcd +49d

_____ ____________ ___

77d 01110001bcd 71d 77d 71d

Como se puede apreciar, aún cuando las combinaciones son permitidas, el resultado no es correcto por ser

la cifra menos significativa de la operación en BCD seis unidades menor que el verdadero. El problema

radica en que la suma de las dos cifras decimales menos significativas resultó mayor que 15 y el acarreo

generado es de base 16 y no base 10. En estos casos se obtienen combinaciones, si bien permitidas,

incorrectas. La corrección se ejecuta:

Siempre que ocurra un acarreo de una cifra BCD a otra, es necesario sumar 6d a la cifra que produjo el

acarreo.

Aplicando la corrección al ejemplo:

28d 00101000bcd 28d

+49d +01001001bcd +49d

_____ _____________ ____

77d 01110001bcd

+ 0110bcd

_____________ ____

01110111bcd 77d

con lo que se ajusta el resultado.

Page 59: Sistemas numericos

De los ejemplos 1.42 y 1.43 se puede concluir que el sumando de corrección 6d=0110bcd es necesario

aplicarlo en la suma de números en BCD siempre que:

a-) Se obtenga una cifra no permitida.

b-) Ocurra un acarreo de una cifra BCD a otra.

Ejemplo 1.43: Realice la resta que se muestra a continuación

51d 01010001bcd 51d

-29d -00101001bcd -29d

______ ____________ _____

22d 00101000bcd 28d 22d 28d

Como se puede apreciar en el resultado, la cifra menos significativa no es una combinación prohibida del

código BCD, pero es errónea, la causa radica en que el préstamo que se ha solicitado del bit 3 al bit 4 es a

un número de base 16 y no de base 10, como debería ocurrir en la resta decimal. Para compensar este

error se resta 6d.

51d 01010001bcd 53d

-29d -00101001bcd -29d

_____ _____________ ____

22d 00101000bcd

- 0110bcd

____________ ____

00100010bcd 22d

con lo que se ajusta el resultado.

Se puede concluir del ejemplo anterior:

Cuando se realiza la resta de números BCD se puede presentar situación errónea cuando se solicita

préstamo entre cifras BCD. La corrección se realiza restando 6d a la cifra que solicita el préstamo.

1.9.3.- El código ASCII

El hombre no sólo trabaja en números, él requiere determinada información cualitativa que complemente

a la cuantitativa.

De manera general, para comunicarse el hombre con la computadora, ella debe soportar:

a-) Información numérica.

b-) Información alfabética codificada.

c-) Información mixta codificada.

Page 60: Sistemas numericos

El código ASCII (del inglés American Standard Code for Information Interchange o código estándar

americano para el intercambio de información) es uno de los tipos de código que soporta información

cualitativa y cuantitativa. Este código utiliza 7 bits que denotan un total de 128 (27) símbolos y fue

introducido por el modelo de computadora IBM 360 en el año 1964, debido a la necesidad de representar

letras mayúsculas y minúsculas, caracteres de control para ordenes y señales de control de periféricos.

Si se trabajase en un formato de datos de 8 bits, el bit más significativo se puede tratar de dos formas

distintas:

a-) Insertar un cero en el bit MSB.

b-) Cuando se realice la transmisión serie de datos, se puede insertar un bit de paridad, para verificar la

integridad del dato transmitido.

En la figura 1.14 se muestra esta configuración.

__ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __

|__|__|__|__|__|__|__|__| |__|__|__|__|__|__|__|__|

Código ASCII Código ASCII

Bit MSB en cero Bit MSB con la paridad

(a) (b)

Figura 1.14.- Tratamiento del bit más significativo en un byte donde se almacena el código ASCII

de 7 bits.

En la tabla 1.19 se muestran algunos de los caracteres utilizados en el código ASCII, sólo se dan los

caracteres alfanuméricos y especiales, y están dados en valor hexadecimal para el código ASCII.

1.9.4.- Conversión entre los códigos ASCII y BCD.

La diferencia entre el código ASCII y el BCD es el valor 30h. Para convertir de BCD a ASCII se suma

30h y para convertir de ASCII a BCD se sustrae 30h.

Ejemplo 1.44: Convierta el número 0110bcd a código ASCII

Como la diferencia es de 30h, este es el valor sumado:

6h 0110bcd

+30h +00110000bcd

______ ________________

36h 00110110ascII

Se puede entonces afirmar que 00110110ascII corresponde al valor 0110bcd.

Page 61: Sistemas numericos

Carácter Valor ASCII

(H)

Carácter Valor ASCII

(H)

Carácter Valor ASCII

(H)

0

1

2

3

4

5

6

7

8

9

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

30

31

32

33

34

35

36

37

38

39

41

42

43

44

45

46

47

48

49

4A

4B

4C

4D

4E

4F

50

51

52

53

54

55

V

W

X

Y

Z

a

b

c

d

e

f

g

h

i

j

k

l

m

n

o

p

q

r

s

t

u

v

w

x

y

z

56

57

58

59

5A

61

62

63

64

65

66

67

68

69

6A

6B

6C

6D

6E

6F

70

71

72

73

74

75

76

77

78

79

7A

SP (blanco)

¡

#

$

%

&

(

)

*

+

,

- (menos)

.

/

:

;

<

=

>

?

@

[

\

]

^

_ (subray.)

{

| (OR lógico)

}

~

20

21

22

23

24

25

26

27

28

29

2A

2B

2C

2D

2E

2F

3A

3B

3C

3D

3E

3F

40

5B

5C

5D

5E

5F

7B

7C

7D

7E

Tabla 1.19.- Caracteres alfanuméricos y especiales en código ASCII

Ejemplo 1.45: Convierta el valor 00110011ascII (3d) a código BCD

Para convertir de ASCII a BCD se sustrae 30h:

33h 00110011ascII

-30h -00110000b

_____ ________________

03h 00000011bcd = 0011bcd

Por lo anterior se puede afirmar que el código 00110011ascII corresponde al 0011bcd.

Page 62: Sistemas numericos

1.9.5.- La conversión entre mayúsculas y minúsculas

Nótese en la tabla 1.19 que las letras mayúsculas y minúsculas están ordenadas alfabéticamente en el

código ASCII, observe además como el código que representa a la "A" es 41h mientras que a la "a" es

61h. Entre una tecla mayúscula y una minúscula existe una diferencia de 20h. Entonces se puede concluir:

Para convertir una letra mayúscula a una minúscula se adiciona 20h y para convertir de minúscula a

mayúscula se sustrae 20h cuando se trabaja con el código ASCII.

Ejemplo 1.46: Convierta el carácter "F" a "f" en código ASCII

El código ASCII de "F" es 46h , para transformar a minúscula:

01000110ascII 46h

+00100000b +20h

____________ _____

01100110ascII 66h

Se puede comprobar que el código resultante, 01100110ascII corresponde a la letra "f".

Ejemplo 1.47: Convierta el código del carácter "t" al "T"

El código ASCII de "t" es el 74h, para convertir al código de mayúsculas:

01110100ascII 74h

-00100000b -20h

________________ ______

01010100ascII 54h

Se puede comprobar que el código 54h corresponde a la letra "T".

Debido al ordenamiento alfabético en el código ASCII existe en este un orden lexicográfico en el cual la

"B" sucede a la "A" y así consecutivamente. Esto permite que la palabra LUISA sea mayor que LUIS,

pues en la primera la quinta letra es la A (código 41h) y en la segunda es "Espacio en Blanco" (código

20h), esto facilita el tratamiento de cadenas de caracteres.

Para determinar el valor de un carácter numérico en el código ASCII, sólo hace falta restar 48d o 30h.

Así el número tres en código ASCII es:

33ascII – 30h =3h = 3d

lo cual es equivalente a:

33h = 51d, 51d – 48d = 3d.

Se debe destacar que en las computadoras (especialmente los PC‟s) se ha creado un código ASCII

extendido, que incorpora caracteres para dibujos y otras funciones. El número de caracteres en el código

ASCII extendido es 256, pues se utilizan los 8 bits para almacenar el código.