Número desnormalizado

A noção de número desnormalizado é utilizada na representação de números em informática pelo método de ponto flutuante , padronizado pela norma IEEE 754 . É uma forma de representar números de valor muito próximo de zero.

Pré-requisitos

A representação de ponto flutuante para computadores é baseada em dois conceitos: notação científica e o sistema binário (ou base 2).

Para escrever números na base 10, podemos usar a chamada notação "científica" , que inclui duas partes:

na forma "  n × 10 a  ". Por exemplo :

O termo "  expoente  " corresponde à potência de 10, e o termo mantissa corresponde à parte decimal. Assim, em "1,23 × 10 −2  ",

O sistema binário , também chamado de "  base 2", é uma forma de anotar números envolvendo apenas dois dígitos, 0 e 1. É bem adequado para a eletrônica, pois corresponde a dois estados muito distintos: temos terminais auxiliares de um componente a tensão V 0 ou uma tensão V 1 ("a corrente não flui ou a corrente passa"). Para distinguir essa notação da notação decimal, adicionamos aqui um "b" no final do número. Aqui estão alguns exemplos de números:

Um número decimal binário de quatro dígitos n 1 n 0 , n -1 n -2 b corresponde ao número decimal n 1 × 2 1 + n 0 × 2 0 + n -1 × 2 -1 + n -2 × 2 - 2 .

Podemos, portanto, ter uma notação científica binária:

n 1 n 0 , n -1 n -2 b pode ser escrito n 1 , n 0 n -1 n -2 b × 2 1 .

por exemplo

No caso de notação científica binária, o número de ponto flutuante deve estar entre 1b inclusive e 10b excluído (ou seja, 2 excluídos), ou seja, sua parte inteira é necessariamente 1b.

Representação de um número normalizado

De acordo com a referida norma, a representação de um número real pode ser dividida em três partes:

O valor do número representado é igual a:

valor = sinal × (1 + mantissa ) × 2 ( expoente - deslocamento)

De fato, em notação científica em base binária, toda a parte é necessariamente 1, portanto, é inútil usar um bit para representá-la, fica-se satisfeito em representar a parte fracionária.

Representação de um número desnormalizado

Um número é considerado desnormalizado quando

Se seguíssemos a mesma representação dos números com expoente diferente de zero, teríamos

valor = sinal × (1 + mantissa ) × 2 -shift

mas o valor retido é

valor = sinal × mantissa × 2 -shift + 1

ou seja, para um expoente codificado em 8 bits (a chamada representação de precisão única), temos

valor = sinal × mantissa × 2 -126

e que para um expoente codificado em 11 bits (a chamada representação de precisão dupla), temos

valor = sinal × mantissa × 2 -1022

Motivo desta representação

Com os números desnormalizados, abandonamos a notação científica. Se a mantissa corresponder a 0,1b (o “b” significa que estamos no modo binário, na base dois), então:

vemos, portanto, que o menor número representável de forma normalizada é 1.000… 00b × 2 - deslocamento (uma vez que uma mantissa nula e um expoente nulo são usados ​​para representar zero), enquanto na representação desnormalizada, é 0,000… 01b × 2 - deslocamento . Podemos, portanto, representar números menores. Também garante a continuidade com os números normalizados, uma vez que:

ou um "salto" de 0,000 ... 01b × 2 - shift + 1

Portanto, temos, em simples precisão:

Modelo Expositor Mantissa Valor aproximado Desvio / anterior
Zero 0000 0000 000 0000 0000 0000 0000 0000 0,0
Menor número desnormalizado 0000 0000 000 0000 0000 0000 0000 0001 1,4 × 10 −45 1,4 × 10 −45
Próximo número desnormalizado 0000 0000 000 0000 0000 0000 0000 0010 2,8 × 10 −45 1,4 × 10 −45
Próximo número desnormalizado 0000 0000 000 0000 0000 0000 0000 0011 4,2 × 10 −45 1,4 × 10 −45
... ... ... ... ...
Maior número desnormalizado 0000 0000 111 1111 1111 1111 1111 1111 1,175 494 21 × 10 −38 1,4 × 10 −45
Menor número padronizado 0000 0001 000 0000 0000 0000 0000 0000 1,175 494 35 × 10 −38 1,4 × 10 −45
Próximo número padronizado 0000 0001 000 0000 0000 0000 0000 0001 1,175 494 49 × 10 −38 1,4 × 10 −45

Veja também

links externos