Conversor IEEE 754

Este conversor IEEE 754 transforma um número decimal no padrão de 16, 32 ou 64 bits e mostra sinal, expoente, mantissa, o valor exato armazenado e o erro de arredondamento. Também aceita hexadecimal e bits.

Fonte: Wikipedia – IEEE 754 (Formate, Bias, subnormale Zahlen, Sonderwerte). Atualizado em: .

Minha caixa de ferramentasSeus dados ficam salvos só neste navegador.

Resultado

Resultado
0x3DCCCCCD · 0 01111011 10011001100110011001101
Estrutura dos bits
ParteBitsSignificado
Sinal0+
Expoente (8 bit)01111011123 − 127 = -4
Mantissa (23 bit)100110011001100110011011.10011001100110011001101
Valor armazenado
GrandezaValor
Hexadecimal0x3DCCCCCD
Tiponúmero normal
Valor exato armazenado0.100000001490116119384765625
Diferença em relação à entrada+1.490e-9
Antecessor0.0999999940395355224609375
Sucessor0.10000000894069671630859375
O arredondamento vai ao número representável mais próximo e, em caso de empate, à mantissa par. Antecessor e sucessor mostram o espaçamento entre dois números de ponto flutuante vizinhos. Com 32 bits: valor = (−1)^s · 2^(e − viés) · (1 + m/2^p).

Como o cálculo é feito

Um número de ponto flutuante tem um sinal s, um expoente e e uma mantissa m: valor = (−1)^s · 2^(e − viés) · 1,m. O decimal 0,1 vira 0x3DCCCCCD como float e é armazenado como 0,100000001490116119384765625.

Os três formatos

Por que 0,1 não é exato

Números de ponto flutuante armazenam potências de dois, mas 0,1 é uma dízima periódica em binário. Por isso é arredondado, e 0,1 + 0,2 dá 0,30000000000000004. O conversor mostra o valor decimal exato armazenado e o erro de arredondamento.

Valores especiais

Se todos os bits do expoente são 1, o número é infinito (mantissa 0) ou NaN (mantissa diferente de 0). Se todos são 0, o número é zero ou subnormal, armazenado sem o um inicial.

Perguntas frequentes

Como converter um número decimal para IEEE 754?

Decompõe-se em sinal, expoente na base 2 e mantissa, armazenados em 8 + 23 bits (float) ou 11 + 52 bits (double). O conversor faz isso e mostra hexadecimal e bits.

Por que 0,1 em float não é exatamente 0,1?

0,1 é uma fração infinita em binário e precisa ser arredondado. Como float dá 0,100000001490116… e como double 0,1000000000000000055….

O que significam os bits de um float?

O primeiro bit é o sinal, os 8 seguintes o expoente com viés 127 e os últimos 23 a mantissa sem o um inicial.

Fontes e base legal

Última atualização: · Princípios editoriais

Ferramentas relacionadas