representación de números decimales

44
Representación de Números Decimales 95.57/75.03 ORGANIZACIÓN DEL COMPUTADOR PEDRO IGNACIO MARTOS ([email protected]) 1

Upload: others

Post on 16-Apr-2022

10 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Representación de Números Decimales

Representación de Números Decimales95.57/75.03 ORGANIZACIÓN DEL COMPUTADOR

PEDRO IGNACIO MARTOS ([email protected])

1

Page 2: Representación de Números Decimales

Contenido❑Introducción

❑Representación Punto Fijo

❑Representación Punto Flotante

❑Operaciones en Punto Flotante

2

Page 3: Representación de Números Decimales

Introducción❑La representación de números enteros en distintos sistemas denumeración utilizando n dígitos se puede escribir en forma general como

dn-1 x bn-1 +…+ d1 x b1 + d0 x b0

Siendo dx un digito del sistema en la posición x, y b la base del sistema

❑Para una cierta cantidad de dígitos n, se pueden representar

0 a bn – 1 valores en el caso de enteros sin signo y

–bn-1 a bn-1 – 1 valores en el caso de enteros signados en la convención de complemento a la base

3

Page 4: Representación de Números Decimales

Representación “Punto Fijo” (PFijo)❑Lo anterior puede generalizarse para representar números con parte decimal de la siguiente manera

❑dn-1 x bn-1 +…+ d1 x b1 + d0 x b0 + d-1 x b-1 +…+ d-m x b-m

Siendo m la cantidad de dígitos decimales disponibles.

❑La precisión de la parte decimal es 1/bm por lo que hay asociado un error de representación o redondeo

4

Page 5: Representación de Números Decimales

Representación “Punto Fijo” (PFijo)❑A esta representación se la denomina “de punto fijo” ya que elpunto decimal ocupa un lugar fijo dentro de la cantidad de dígitosdisponibles para la representación. Hay n dígitos para la parte enteray m dígitos para la parte decimal

5

bn+m … bn+1 bn bm-1 bm-2 … b1 b0

N bits M bits

Punto fijo

Page 6: Representación de Números Decimales

PFijo – Ventajas y Desventajas❑La ventaja de esta representación es que se puede utilizar el mismohardware o las mismas rutinas de software que se utilizan para realizaroperaciones con la representación de números enteros

❑La desventaja de esta representación es la relación entre precisión y rango,dada una cierta cantidad de dígitos (representación finita) hay una relaciónde compromiso entre el mayor numero que se puede representar (dado porlos dígitos asignados a la parte entera) y la precisión de la parte decimal(dada por la cantidad de dígitos asignados a la parte decimal).

❑Para representar números negativos también se utiliza la convención decomplemento a la base

6

Page 7: Representación de Números Decimales

PFijo – Precisión ❑En el caso particular de una representación en base 2, senecesitan entre 3 y 4 dígitos binarios (3 o 4 bits) para lograruna representación con una precisión similar a un digitodecimal

0.0110 0.00000012 = 0.007812510

Cuantos mas bits se utilicen en la parte decimal, mayor serála precisión, pero habrá menos bits disponibles para la parteentera, por lo que se reduce el rango de númerosrepresentables

7

Page 8: Representación de Números Decimales

PFijo – Rango ❑El rango representable para n bits en la parte entera y m bits en la parte decimal de números signados en complemento a la base es

– 2(n-1) a 2(n-1) – 2(-m)

❑Para 4 bits de parte entera (n=4) y 4 bits de parte decimal (m=4)

8

1 0 0 0 0 0 0 0 … 0 1 1 1 1 1 1 1

-2n-1 = -23 = -8 2n-1 - 2-m = 23 - 2-4 = 7,9375

Page 9: Representación de Números Decimales

PFijo – Compromiso entre Rango y Precisión❑Ejemplo: dados 8 bits para representar un numero en punto fijo con signo en complemento a 2

❖Si usamos 4 bits para la parte entera y 4 para la parte decimal

Rango -8 .0000 a 7.9375 con precisión 1/16 = 0.0625

❖Si usamos 6 bits para la parte entera y 2 bits para la parte decimal

Rango -32.0000 a 31.75 con precisión 1/4 = 0.25

❖Si usamos 2 bits para la parte entera y 6 bits para la parte decimal

Rango -2.0000 a 1.984375 con precisión 1/64 = 0.015625

9

Page 10: Representación de Números Decimales

PFijo – Suma ❑Ejemplos de sumas

0110.0101 (6.312510) (10110 entero)

+ 0001.1000 (1.500010) (2410 entero)

0111.1101 (7.812510) (12510 entero) NZVC=0000

1011.1101 (-4.187510) (-6710 entero)

+ 1101.0111 (-2.562510) (-4110 entero)

1 1001.0100 (-6.750010) (-10810 entero) NZVC=1001

10

Page 11: Representación de Números Decimales

PFijo – Consideraciones ❑Este formato se utilizaba en DSPs (Digital Signal Procesors), queimplementaban una unidad de Punto Fijo en hardware; y en procesadoresde propósito general sin unidad de punto flotante (FPU)

❑Con la popularización de procesadores con FPU el formato comenzó acaer en desuso, pero resurgió en aplicaciones de IA porque permiterealizar cálculos con una precisión razonable a mucha mayor velocidadque utilizando una representación de punto flotante.

❑En IA se denomina Cuantización (Quantization) a la optimización quemapea un numero de 32 bits en Punto Flotante a un numero de 8 bits enPunto Fijo para aplicaciones en dispositivos con baja potencia de computo

❑En internet hay calculadoras que nos permiten ver con que precisiónestamos representando un numero en otra base dada una cierta cantidadde dígitos. Una de ellas esta en https://planetcalc.com/862/

11

Page 12: Representación de Números Decimales

Punto Flotante (PFlotante)❑Un número en punto flotante se expresa como un numero decimal multiplicado por una base elevada a un exponente

±d0.d1d2d3d4…dp-3dp-2dp-1 x be

donde el número d0.d1d2d3d4…dp-3dp-2dp-1 se denomina significand y p es la cantidad de dígitos para representarlo.

❑También puede descomponerse como una suma de potencias

±(d0+d1.b-1+d2b-2+…+dp-1.b-(p-1)) x be (0 ≤ di < b)

❑El exponente e puede tomar valores entre emax y emin.

❑Teniendo en cuenta que puede haber bp valores distintos de significands y emax- emin+1 valores de exponente, un número en punto flotante se representa con

log2(emax-emin+1) + log2(bp) + 1 bit (de signo)

12

Page 13: Representación de Números Decimales

PFlotante – Estándar IEEE 754

❑Signo: un bit; 1=Negativo, 0=positivo

❑Exponente: se utiliza un bias (desplazamiento); para z bits de exponente, el valor se calcula como:

Exponente Representación PF = (Exponente del número) + (2(z-1) – 1)

❑Mantisa: representación normalizada 1,xxxx; de manera que 1.0 < Mantisa < 2.0. De esta manera se consigue un bit adicional implícito

❑Se definen las operaciones básicas (suma y multiplicación) , el redondeo, y la representación de +infinito, -infinito entre otras cosas

13

MSB LSB MSB LSB

s e f

Signo Exponente Mantisa

Page 14: Representación de Números Decimales

PFlotante – Estándar IEEE 754Ventajas de una representación estandarizada

❑Las distintas bibliotecas de software que operan con unarepresentación en PFlotante generan los mismos resultados

❑Distintas implementaciones de hardware generan losmismos resultados

❑Los resultados de las operaciones son independientes de la implementación

14

Page 15: Representación de Números Decimales

PFlotante – Estándar IEEE 754Ejemplo:

15

Page 16: Representación de Números Decimales

PFlotante – Estándar IEEE 754

16

Page 17: Representación de Números Decimales

PFlotante – Estándar IEEE 754❑En el caso que el Exponente sean todos unos o todos ceros, la interpretación es distinta y depende del contenido del significand:

17

Page 18: Representación de Números Decimales

PFlotante – Estándar IEEE 754Características del Estándar:

❑Cuando se redondea un resultado de medio camino al número de punto flotantemás cercano, toma el que es par

❑Incluye los valores especiales NaN, +infinito y –infinito

❑Utiliza números desnormalizados para representar valores menores que 1.0 x 2Emin

❑Redondea al valor más cercano por defecto, pero tiene además otros tres modosde redondeo

18

Page 19: Representación de Números Decimales

Números denormalizados❑En muchos sistemas de punto flotante si Emin es el exponente más chico, un número menor a1.0 x 2Emin no puede ser representado. Por lo que si una operación presenta un valor así se lolleva a cero.

❑En el estándar IEEE los números menores a 1.0 x 2Emin son representados usando significandsmenores que 1 (es lo que se denomina como gradual underflow)

Ejemplo 1: se tiene el número x = 1.234 x 10Emin, con un significand de cuatro dígitos en base 10 .

❖Si se divide por 10, se redondea a 0.123 x 10Emin

❖Si se divide por 100, se redondea a 0.012 x 10Emin

❖Si se divide por 1000, se redondea a 0.001 x 10Emin

❖Si se divide por 10000, se redondea a 0.000 x 10Emin

19

Page 20: Representación de Números Decimales

Números denormalizadosEjemplo 2: se tienen dos números con un significand de cuatro dígitos en base 10

x = 1.245 x 10Emin , y = 1.232 x 10Emin,

❑La operación x – y = 0 (sistema sin denormal)

❑La operación x – y = 0.013 x 10Emin (sistema con denormals)

20

Page 21: Representación de Números Decimales

Parámetros de la representación IEEE 754

21

Page 22: Representación de Números Decimales

Representación de valores extremos

22

Page 23: Representación de Números Decimales

Operaciones en PFlotante: Multiplicación

23

❑Sean n1 y n2 dos números binarios en punto flotante:

n1 = s1 x 2e1 , n2 = s2 x 2e2

❑La multiplicación de estos dos números será:

n1 x n2 = (s1 x 2e1) x (s2 x 2e2) = (s1 x s2) x 2e1+e2

Page 24: Representación de Números Decimales

Operaciones en PFlotante: Multiplicación❑Algoritmo de Multiplicacion:

1) Multiplicar los dos significands mediante una multiplicación entera, incluyendo el bit implicito

2) Redondear el Resultado

3) Calcular el nuevo exponente y el signo

24

Page 25: Representación de Números Decimales

P A

X0 X1. X2 X3 X4 X5 X6 X7 g r s s s s s s

X1. X2 X3 X4 X5 X6 X7 g

Producto

Caso 1: X0 = 0

El bit más significativo de P es 0. Se desplaza P aizquierda un bit, introduciendo en P el bit g de A.

El bit más significativo de P es 1, Hacer s := s v r y r := g, y sumar 1 al exponente.

Multiplicación: Casos

X0. X1 X2 X3 X4 X5 X6 X7Caso 2: X0 = 1

25

Page 26: Representación de Números Decimales

Operación: A x B

Operandos: A y B (23 bits, 6 de exponente)

A = 8323071

B = 2007961

A =

22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0 0 1 1 1 1 0 1 0 1 0 0 0 1 1 1 0 0 1 1 0 0 1B =

22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

Multiplicación: Ejemplo

26

Page 27: Representación de Números Decimales

22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1A =

22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0 0 1 1 1 1 0 1 0 1 0 0 0 1 1 1 0 0 1 1 0 0 1B =

Exponente A = 62 – Bias = 62 – 31 = 31

Mantisa A = 0,99998474121093

Signo A = 1

A = -1,99998474121093 x 231

Exponente B = 30 – Bias = 30 – 31 = -1

Mantisa B = 0,63905334472656

Signo B = 0

B = +1,63905334472656 x 2-1

Multiplicación: Ejemplo

27

Page 28: Representación de Números Decimales

- Cálculo del exponente:

Exponente = Exponente A + Exponente B = 31 – 1 = 30

- Cálculo del producto de las mantisas (incluyendo el 1):

El bit más significativo del resultado es igual a 1, por lo tanto se

incrementa el exponente calculado anteriormente en 1:

Exponente = Exponente + 1 = 30 + 1 = 31

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

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

X 1 1 0 1 0 0 0 1 1 1 0 0 1 1 0 0 1

1 1 0 1 0 0 0 1 1 1 0 0 1 1 0 0 0 0 0 1 0 1 1 1 0 0 0 1 1 0 0 1 1 1

Multiplicación: Ejemplo

28

Page 29: Representación de Números Decimales

- Empaquetado del exponente:

Exponente = 31 + Bias = 31 + 31 = 62

- Cálculo del signo:

Signo A * Signo B = 1

- Resultado final:

5 4 3 2 1 0

1 1 1 1 1 0

22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

1 1 1 1 1 1 0 1 0 1 0 0 0 1 1 1 0 0 1 1 0 0 0

Multiplicación: Ejemplo

29

Page 30: Representación de Números Decimales

Operación: A + B

Operandos: A y B (32 bits, 8 de exponente)

A = 1052770304

B = 1120403456

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

0 0 1 1 1 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0A =

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

0 1 0 0 0 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0B =

Suma: Ejemplo

30

Page 31: Representación de Números Decimales

Exponente A = 125 – Bias = 125 – 127 = -2

Mantisa A = 0,5

Signo A = 0

A = +1,5 x 2-2

Exponente B = 133 – Bias = 133 – 127 = 6

Mantisa B = 0,5625

Signo B = 0

B = +1,5625 x 26

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

0 0 1 1 1 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0A =

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

0 1 0 0 0 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0B =

Suma: Ejemplo

31

Page 32: Representación de Números Decimales

PASO 1

Si eA < eB intercambiar los operados.

Colocar el exponente del resultado tentativamente en eA

El eA es menor al eB por lo que intercambiamos los

operandos

B = +1,5 x 2-2A = +1,5625 x 26

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

0 1 0 0 0 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0A =

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

0 0 1 1 1 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0B =

Suma: Pasos

32

Page 33: Representación de Números Decimales

Si eA < eB intercambiar los operados.

Colocar el exponente del resultado tentativamente en eA

Establecemos como exponente del resultado al del operando A:

exp = 6

Suma: Pasos

PASO 2

33

Page 34: Representación de Números Decimales

Si los signos de los operandos son distintos reemplazar

el significand B por su complemente a dos.

Los signos de los operandos son iguales, por lo tanto

no se hace nada

PASO 3

Suma: Pasos

34

Page 35: Representación de Números Decimales

23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Colocar el significand B (sB) en un registro de 24 bits y desplazarlo a la

derecha eA-eB posiciones (introduciendo 1’s si fue complementado en el

paso anterior).

Con los bits desplazados fuera del registro setear los flags g (bit más

significativo, r (siguiente bit) y s (restantes bits).

Se coloca el significand B (sB) en un registro de 24 bits

Suma: Pasos

PASO 4

35

Page 36: Representación de Números Decimales

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

0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

g r s s s s s s

Se desplaza el contenido del registro a derecha eA - eB posiciones (8 posiciones)

En el paso 2 no hubo complementación por lo que se rellena con 0’s

Suma: Pasos

Colocar el significand B (sB) en un registro de p bits y desplazarlo a la derecha

eA-eB posiciones (introduciendo 1’s si fue complementado en el paso anterior).

Con los bits desplazados fuera del registro setear los flags g (bit más

significativo, r (siguiente bit) y s (restantes bits).

PASO 5

36

Page 37: Representación de Números Decimales

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

0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

g r s s s s s s

Se desplaza el contenido del registro a derecha eA - eB posiciones (8 posiciones)

Suma: Pasos

Colocar el significand B (sB) en un registro de p bits y desplazarlo a la derecha

eA-eB posiciones (introduciendo 1’s si fue complementado en el paso anterior).

Con los bits desplazados fuera del registro setear los flags g (bit más

significativo, r (siguiente bit) y s (restantes bits).

PASO 6

37

Page 38: Representación de Números Decimales

23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

+ 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0

1 1 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Calcular un significand preliminar S = sA + sB sumando sA al registro de 24 bits

que contiene sB.

Si los signos de los operandos A y B son diferentes, el MSB de S es 1, y no hubo

carry-out entonces S es negativo. Reemplazar S por su complemento a dos.

sA

sB

S

Los signos de los operandos son iguales por lo que el S queda como está

Suma: Pasos

PASO 7

38

Page 39: Representación de Números Decimales

Desplazar S de la siguiente manera:

- Si los signos de los operandos son iguales y hubo carry-out en el paso 4 desplazar

S una posición a derecha, colocando en la posición más significativa un 1 (el

carry-out).

- Si no se cumple cualquiera de las condiciones anteriores desplazar S a izquierda

hasta que esté normalizado. En el primer desplazamiento introducir en el bit

menos significativo el valor de g, luego introducir 0’s.

Ajustar el valor del exponente de acuerdo a los desplazamientos realizados.

El número está normalizado

23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

1 1 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Suma: Pasos

PASO 8

39

Page 40: Representación de Números Decimales

Ajustar r y s.

- Si S fue desplazado a derecha en el paso 5:

r := LSB de S antes del desplazamiento s := or(g, r, s)

- Si no hubo desplazamiento en el paso 5:

r := g s := or(r, s)

- Si hubo un sólo desplazamiento a izquierda en el paso 5 dejar r y s como están

- Si hubo dos o más desplazamientos a izquierda en el paso 5:

r := 0 s := 0

No hubo desplazamiento en el paso 5 por lo que:

r = g = 0 y s = or(r, s) = or(0, 0) = 0

Suma: Pasos

PASO 9

40

Page 41: Representación de Números Decimales

Redondear S utilizando la tabla de modos de redondeo.

Si el redondeo provoca un carry-out, desplazar S a derecha y ajustar el exponente.

Luego de estos pasos se obtiene el significand del resultado de la operación suma.

Suma: Pasos

PASO 10

Modo de redondeo Signo del resultado ≥ 0 Signo del resultado < 0

- +1 si (r or s)

+ +1 si (r or s)

0

Más cercano +1 si (r and p0) or (r and s) +1 si (r and p0) or (r and s)

41

Page 42: Representación de Números Decimales

Calcular el signo del resultado.

Si los operandos tienen el mismo signo, éste es el signo del resultado. En caso contrario el signo del

resultado depende de cuál de los operandos es negativo, si hubo un intercambio de operandos en el paso

1, y si S fue reemplazado por su complemento a dos en el paso 4 (ver tabla de signos)

Suma: Pasos

PASO 11

Swap Compl Signo Op1 Signo Op2 Signo resultado

Sí + - -

Sí - + +

No No + - +

No No - + -

No Sí + - -

No Sí - + +

42

Page 43: Representación de Números Decimales

Calcular el signo del resultado.

Si los operandos tienen el mismo signo, éste es el signo del resultado. En caso

contrario el signo del resultado depende de cuál de los operandos es negativo, si hubo

un intercambio de operandos en el paso 1, y si S fue reemplazado por su complemento

a dos en el paso 4 (ver tabla de signos)

Ambos operando son positivos, por lo que el resultado de la operación de

suma será positivo

Suma: Pasos

PASO 12

43

Page 44: Representación de Números Decimales

Resultado Final

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

0 1 0 0 0 0 1 0 1 1 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Suma: Pasos

exp = 6 + BIAS exp = 10000101

signo = +

Resultado de la suma de los significands =

110010001100000000000000

44