Ir para o conteúdo
Totalmente local

Conversor IEEE 754

Converta um número decimal para o seu padrão de bits IEEE 754, ou bits de volta para um número.

Entrada

Conversor IEEE 754

Cada número em vírgula flutuante que um computador armazena é realmente um bit de sinal, um expoente e uma mantissa, agrupados de acordo com IEEE 754 — o padrão que C, Java, Python e JavaScript usam para seus tipos numéricos. Cole um número decimal e esta ferramenta o codifica no padrão de bits exato; cole o padrão de bits de volta e ele o decodifica em um número. Altere a direção com um clique para ir de ambas as formas.

Duas precisões são suportadas: 32 bits simples (1 bit de sinal, 8 bits de expoente, 23 bits de mantissa — um float em C ou um f32 em Rust) e 64 bits dupla (1 + 11 + 52 — um double em C e o que cada número JavaScript é internamente). O padrão de bits pode ser escrito em hexadecimal ou como uma simples cadeia de 0s e 1s, com a ordem de bytes definida como big-endian ou little-endian para corresponder a como um depurador ou despejo de memória apresenta os bytes.

Ative "Mostrar sinal / expoente / mantissa" para ver os três campos separados — a forma mais rápida de ver por que um número codifica dessa forma. Ative "Mostrar valor armazenado real e erro de arredondamento" para ver o que acontece com um número após o armazenamento: 3,14 não é exato em nenhuma precisão, e a ferramenta mostra o valor realmente armazenado junto com a diferença entre o que você digitou e o que o hardware mantém — o motivo pelo qual as comparações de vírgula flutuante no código falham. Valores especiais — 0, -0, Infinity, -Infinity e NaN — todos se convertem para seus padrões definidos, um por linha, de modo que uma lista inteira se converte de uma vez.

Tudo é executado localmente no seu navegador, usando o mesmo DataView que o próprio mecanismo JavaScript usa para ler e escrever números em vírgula flutuante IEEE 754 — nenhuma biblioteca de vírgula flutuante do lado do servidor e nenhum dado deixa o seu dispositivo.

FAQ

O que é IEEE 754?
É o padrão que define como os computadores armazenam números não inteiros em formato binário: um bit de sinal, um expoente e uma mantissa (fração). Precisão simples usa 32 bits no total, precisão dupla 64 — os formatos por trás de float e double em C, f32 e f64 em Rust, e cada número em JavaScript.
Por que 3,14 não se decodifica exatamente de volta a 3,14?
A maioria das frações decimais não pode ser representada exatamente em formato binário, da mesma forma que 1/3 não pode ser escrita exatamente em formato decimal. O valor realmente armazenado é o mais próximo que o formato pode manter — ative "Mostrar valor armazenado real" para vê-lo e o tamanho da diferença.
Qual é a diferença entre precisão simples e dupla?
Precisão simples (32 bits) tem menos espaço para a mantissa, então arredonda mais números e perde mais dígitos de precisão. Precisão dupla (64 bits) é exata para muito mais valores — é o que os números JavaScript já são internamente, de modo que passar um duplo através desta ferramenta nunca perde nada.
O que muda a ordem de bytes?
Afeta apenas como os mesmos bits são agrupados em bytes para leitura ou escrita — big-endian escreve o byte mais significativo primeiro, little-endian por último, correspondendo a como um depurador ou despejo hexadecimal exibe a memória em uma arquitetura específica. O número em si e a divisão sinal/expoente/mantissa não mudam.
Minha entrada é carregada em algum lugar?
Não. A conversão é executada inteiramente no seu navegador usando as mesmas APIs de leitura/escrita binárias nas quais o próprio mecanismo JavaScript se baseia — nada do que você digita aqui é enviado para um servidor.