Sistemas informáticos multiusuario e en rede/Representación dos números reais

En Galilibros, o Wikibooks en galego.
Saltar ata a navegación Saltar á procura


Representación en coma fixa[editar]

  • O punto decimal sitúase nunha posición fixa.
  • Utilízase un determinado número de bits para a parte enteira e para a parte decimal.
  • O rango de números representables está moi limitado.

Un exemplo de codificación en coma fixa é o BCD.

BCD[editar]

O BCD (binary-coded decimal, decimal codificado en binario) é un sistema de codificación de números decimais en coma fixa. Utilízase principalmente para amosan en pantalla os números. Neste sistema codifícase cada díxito como a súa representación en binario, utilizando un nibble (4 bits). Isto é: 4 será 0100, 9 será 1001, etc.

Existen dous tipos de codificación BCD:

BCD desempaquetado[editar]

No BCD desempaquetado represéntanse os números decimais de xeito que cada unha das súas cifra ocupará un byte. Cada un dos bytes leva no seu nibble da esquerda catro uns (1111), denominados "bits de zona", e no seu nibble da dereita leva a codificación da cifra en BCD, o que se denomina "bits de díxito".

O nibble esquerdo da cifra á dereita de todo representa o signo do número, positivo (1100) ou negativo (1101).

Exemplo:

Sistema decimal: 2009
BCD desempaquetado: 1111 0010 1111 0000 1111 0000 1100 1001

BCD empaquetado[editar]

No BCD empaquetado represéntanse os números decimais de xeito que cada cifra ocupa un nibble. O nibble da dereita de todo representará o signo do número, ben positivo (1100) ben negativo (1101). O tamaño do número a representar será un múltiplo dun byte (2 nibbles), e en caso de non ser así engadirase un nibble repleto de ceros (0000) pola esquerda. É dicir, o número de nibbles que compoña o BCD empaquetado ten que ser par.

Exemplo:

Sistema decimal: 2009
BCD empaquetado: 0000 0010 0000 0000 1001 1100

Representación en coma flotante[editar]

Para representar os números en "coma flotante" utilízase a notación científica. Nesta notación, as cantidades exprésanse segundo a forma:

número = mantisa × baseexpoñente

Exemplo en decimal:

12,34 = 0,1234 × 102

A mantisa non ten parte enteira, e o seu primeiro díxito pola dereita é distinto de cero.

Exemplo en base 2:

12,34 = 0,77125 × 24
Para chegar a este resultado foise dividindo 12,34 entre 2 sucesivamente, ata que a parte enteira quedou en 0. O resultado da división foi 0,77125, e o número de divisións entre 2 que se realizaron foi 4.

Onde:

Base: 2
Mantisa: 0,77125
Expoñente: 4

Para a representación en binario, necesitamos representar tres datos (a base non fai falla representala pois sempre é 2): signo, expoñente e mantisa. Na cadea de bits seguirase esta mesma orde.

O signo pode ser positivo (0) ou negativo (1). O expoñente almacénase en exceso a 2n-1. A mantisa almacénase en C1.

No estándar IEEE 754, búscase unha mantisa que teña unha unidade diante da coma. Se ben á hora de operar se ignora dita unidade diante da coma, o sistema afectará ao expoñente.

Decimal: 0,1234 × 102
Base 2: 0,77125 × 24
Base 2 no estándar IEEE 754: 1,5425 × 23

Ademais, o expoñente non se almacena en exceso a 2n-1, senón en exceso a 2n-1 - 1.

Simple precisión[editar]

A representación en simple precisión utiliza 32 bits para a representación dos números en coma flotante: 1 bit para o signo, 8 bits para o expoñente e 23 bits para a mantisa.

Exemplo:

Sistema decimal: 12,34
Coma flotante en simple precisión: 0 10000100 00111010100011110101110
Notación científica: 0,77125 × 24.
O signo é positivo, polo que o primeiro bit será 0.
O expoñente é 4. n é 8, por representarse o expoñente en 8 bits, así que o expoñente (4) en exceso a 2n-1 será exceso (28-1=7) + expoñente (4) = 128 + 4 = 132. En binario: 10000100.
A mantisa é 0,77125. En binario puro será 110 0010 1011 1000 0101 0001, que ao facer o complemento a un queda en 001 1101 0100 0111 1010 1110.
Coma flotante en simple precisión no estándar IEEE 754: 0 10000010 01110101000111101011100
Notación científica: 1,5425 × 23.
O signo é positivo, polo que o primeiro bit será 0.
O expoñente é 3. n é 8, por representarse o expoñente en 8 bits, así que o expoñente (3) en exceso a 2n-1 - 1 será exceso (28-1=7) - 1 + expoñente (3) = 128 - 1 + 3 = 130. En binario: 10000010.
A mantisa é 0,5425 (xa dixemos que a unidade se ignora). En binario puro será 100 0101 0111 0000 1010 0011, que ao facer o complemento a un queda en 011 1010 1000 1111 0101 1100.

Dobre precisión[editar]

A representación en dobre precisión utiliza 64 bits para a representación dos números en coma flotante: 1 bit para o signo, 11 bits para o expoñente e 52 bits para a mantisa.

Precisión estendida[editar]

A representación en dobre precisión utiliza 128 bits para a representación dos números en coma flotante: 1 bit para o signo, 15 bits para o expoñente e 112 bits para a mantisa.