ToolActToolAct

Ferramenta de Conversão de Base

Converta instantaneamente entre binário, octal, decimal, hexadecimal e bases personalizadas

Entrada
Resultados da conversão
Binário (2)
Octal (8)
Decimal (10)
Hexadecimal (16)

Base de entrada

O que é conversão de base numérica?

A conversão de base numérica é o processo de mudar um número de um sistema numérico para outro. As bases comuns incluem binário (base 2), octal (base 8), decimal (base 10) e hexadecimal (base 16).

Na ciência da computação, o binário é o sistema numérico mais fundamental, pois todos os dados dentro dos computadores são armazenados em binário. O hexadecimal é amplamente utilizado para endereços de memória e valores de cores por ser mais compacto e legível que o binário.

Um conversor de base é útil quando valores precisam ser lidos ou comparados em decimal, binário, octal, hexadecimal ou outros sistemas numéricos. Casos comuns incluem programação, máscaras de bits, endereços de memória, valores de cor, protocolos, ensino e desenvolvimento embarcado. Os cuidados principais são sinal, prefixos como 0x, zeros à esquerda, agrupamento e tamanho máximo de inteiro do sistema alvo. Uma conversão matematicamente correta ainda pode diferir de como uma linguagem armazena valores assinados ou com overflow.

Como Usar

Como usar

  1. Insira o número que deseja converter no campo de entrada (ex.: 255, FF, 11111111)
  2. Selecione a base do número de entrada: binário, octal, decimal, hexadecimal ou uma base personalizada
  3. A ferramenta converte automaticamente a entrada em resultados binário, octal, decimal e hexadecimal
  4. Clique no botão 'Copiar' ao lado de qualquer resultado para copiá-lo para a área de transferência

Dicas de Conversão

  • Certifique-se de que os dígitos de entrada sejam válidos para a base selecionada; por exemplo, binário aceita apenas 0 e 1, enquanto hexadecimal aceita 0-9 e A-F.
  • Inteiros grandes podem exceder o intervalo seguro de números do JavaScript em alguns fluxos de trabalho; por isso, verifique valores críticos de engenharia com uma ferramenta dedicada de precisão arbitrária.

Casos de uso

Inspecionar um inteiro em várias bases de programadorEscolha binário, octal, decimal, hexadecimal ou uma base personalizada de 2 a 36 e veja o mesmo valor como base 2, 8, 10 e 16 de uma vez. Cada saída pode ser copiada independentemente para colar em código-fonte, trechos de documentação, tabelas de registradores ou comentários de revisão onde o mesmo número frequentemente aparece lado a lado em duas bases.
Traduzir valores de logs, registradores e anotações de protocoloUse para máscaras de permissão, registradores de dispositivos, IDs numéricos pequenos, valores semelhantes a cores, flags de bits e exemplos copiados de documentação onde o mesmo número é mais fácil de entender em outra base. A conversão é executada inteiramente na página, para que endereços de registradores internos, valores de opcode ou trechos de especificação possam ser verificados sem enviá-los por nenhum serviço externo.
Manter a ferramenta dentro dos limites de conversão de inteirosA página usa JavaScript parseInt e Number.toString, portanto é melhor para notação comum de inteiros sem sinal. Inteiros muito grandes, valores fracionários, formas binárias negativas e interpretação de complemento de dois ainda precisam de uma calculadora específica de domínio.
Decodificar uma combinação de flags bit a bitConverta uma máscara de permissão ou valor de registrador para binário e agrupe de 4 ou 8 bits para ler flags individuais como 0x1F0 ou 0b1010_0001. Útil ao documentar bits de permissão POSIX, registradores GPIO ou flags de funcionalidade onde cada bit tem um nome que o inteiro sozinho esconde. A regra de agrupamento depende da relação 2^4 = 16 entre binário e hex, então cada 4 bits sempre mapeiam para um dígito hexadecimal e cada 3 bits para um dígito octal; preencher com zeros à esquerda é o que faz um byte de 8 bits (0xFF) alinhar limpo a dois dígitos hex em vez de colapsar em um.
Trabalhar explicitamente com complemento de dois e larguras com sinalQuando o valor de origem é um int8, int16 ou int32 com sinal, lembre-se de que a página retorna a representação sem sinal. Converta manualmente com uma fórmula consciente da largura ao interpretar valores negativos de dumps de protocolo, campos de struct ou logs de firmware embarcado. Complemento de dois significa que um valor de largura w `v` cujo bit mais significativo está definido representa `v - 2^w`, então o byte de 8 bits `0xFF` é 255 sem sinal mas -1 com sinal, e a word de 16 bits `0x8000` é -32768. Preencher com zeros à esquerda é significativo para campos de largura fixa como endereços MAC, hextets IPv6 ou canais de cor de 24 bits, e conversão de base fracionária (por exemplo, decimal `0,625` para binário `0,101`) não é suportada por parseInt/toString e precisa de um algoritmo separado.

Princípio técnico

A conversão de base é aritmética de notação posicional. Um dígito d na posição p na base b contribui com d × bᵖ para o valor total, e o valor de um número de N dígitos é Σᵢ₌₀..N₋₁ dᵢ × b^(N-1-i). O sistema decimal é base 10, binário é base 2, octal é base 8, hexadecimal é base 16. Dois algoritmos fazem todo o trabalho: para converter da base b₁ para base 10, avalia-se o polinômio (o método de Horner é a forma padrão in-place: `value = value * b₁ + digit`); para converter da base 10 para base b₂, divide-se repetidamente por b₂ e coletam-se os restos, depois inverte-se a ordem. Ambos os algoritmos são O(N) por dígito e O(1) em espaço extra, e funcionam para qualquer base de 2 a 36 (dígitos '0'-'9' + 'A'-'Z' como 10-35). A maioria dos trabalhos práticos de conversão de base pula a etapa decimal intermediária e vai diretamente entre bases que são potências de dois. Binário ↔ octal agrupa 3 dígitos binários por dígito octal (porque 2³ = 8), e binário ↔ hex agrupa 4 dígitos binários por dígito hexadecimal (2⁴ = 16). É por isso que 0xFF = 11111111₂, 0755 (octal, o modo de arquivo Unix) = 111101101₂ = 493 decimal. A página também lida com base 32 (RFC 4648 §6, usada em alguns tokens de autenticação) e base 36 (o alfabeto tradicional compacto de encurtadores de URL '0'-'9' + 'A'-'Z'), onde a conversão para binário é a única maneira sensata, já que 36 não é uma potência de 2. Esta página usa o parseInt(value, base) nativo do JavaScript para análise e (123).toString(base) para saída. Ambos são limitados à precisão Number: um IEEE 754 binary64 tem uma mantissa de 53 bits, então valores inteiros maiores que 2⁵³ - 1 = 9.007.199.254.740.991 perdem precisão. Por exemplo, Number.MAX_SAFE_INTEGER + 1 é igual a Number.MAX_SAFE_INTEGER + 2 — os dois grandes valores não são representáveis. Para conversão de base de inteiros de precisão arbitrária, BigInt é o caminho moderno: a lógica estilo parseInt em BigInt é direta, e BigInt.prototype.toString(base) lida com qualquer base de 2 a 36. Bibliotecas de criptografia, geradores de UUID e cálculos com números grandes (carteiras HD BIP-32, chaves RSA) usam BigInt por essa razão. O mesmo algoritmo também lida com números com sinal e ponto flutuante, com ressalvas. Em complemento de dois (a representação com sinal dominante para inteiros de largura fixa, desde o design do IBM System/360 de 1965 até todas as CPUs modernas), -1 é tudo uns (0xFFFFFFFF para 32 bits, 0xFFFFFFFFFFFFFFFF para 64), e o bit mais significativo é o bit de sinal. Para converter um inteiro negativo em complemento de dois para decimal, subtrai-se 2ⁿ (onde n é a largura em bits). Para números de ponto flutuante, IEEE 754 binary64 armazena sinal (1 bit), expoente (11 bits, com viés de 1023) e mantissa (52 bits, com um 1 implícito à esquerda). A conversão decimal de um binary64 arbitrário não é portanto exata — 0,1 em IEEE 754 é 0,1000000000000000055511151231257827021181583404541015625, razão pela qual código financeiro usa centavos inteiros ou bibliotecas decimais em vez de float.

  • Notação posicional: um dígito d na posição p na base b contribui com d × bᵖ. O valor completo de um número de N dígitos é Σᵢ dᵢ × b^(N-1-i). O método de Horner avalia isso em tempo O(N) e espaço O(1): `value = value * b + digit`.
  • Para converter de decimal para base b, divide-se repetidamente por b e coletam-se os restos; lê-los na ordem inversa fornece a representação alvo. O algoritmo é O(N) para uma saída de N dígitos.
  • Conversão direta binário ↔ hex: cada dígito hexadecimal são exatamente 4 dígitos binários, então 0xFF = 11111111₂. Binário ↔ octal: cada dígito octal são 3 dígitos binários, então 0755 = 111101101₂.
  • Complemento de dois (usado por toda CPU moderna para inteiros com sinal): o bit mais significativo é o sinal, e números negativos são codificados como 2ⁿ - |x|. -1 em complemento de dois de 32 bits é 0xFFFFFFFF.
  • IEEE 754 binary64 (Number do JavaScript): 1 bit de sinal + expoente com viés de 11 bits (viés 1023) + mantissa de 52 bits com 1 implícito à esquerda. O inteiro seguro máximo é 2⁵³ - 1 = 9.007.199.254.740.991; valores acima disso perdem precisão.
  • parseInt(value, base) e Number.prototype.toString(base) funcionam para bases 2-36 e usam a mantissa Number de 53 bits. Para precisão arbitrária, use BigInt('value', base) e BigInt.prototype.toString(base).
  • Base 32 (RFC 4648 §6) e Base 36 ('0'-'9' + 'A'-'Z') precisam de binário como etapa intermediária porque 32 e 36 não são potências de 2 — um dígito não corresponde a um número fixo de bits.
  • Caso extremo: divisão inteira com resto para bases negativas ou para números negativos em complemento de dois requer tratamento de sinal; a página trata a entrada como um valor absoluto sem sinal e reaplica o sinal ao resultado final.

Exemplos

Decimal para hexadecimal

Entrada: 255 (decimal)
Saída:   FF (hexadecimal)
Nota:    comumente usado em valores de cor CSS, por exemplo #FF0000 para vermelho

Binário para decimal

Entrada: 11111111 (binário)
Saída:   255 (decimal)
Nota:    valor máximo de um binário de 8 bits, ou seja, o maior byte sem sinal

Hexadecimal para binário

Entrada: 1A3F (hexadecimal)
Saída:   1101000111111 (binário)
Nota:    cada 4 dígitos binários correspondem a 1 dígito hexadecimal

Octal para hexadecimal

Entrada: 377 (octal)
Saída:   FF (hexadecimal)
Nota:    permissão Unix 377 (rwxrwxrwx) equivale ao hex FF

Base personalizada (base 36)

Entrada: ZZ (base 36)
Saída:   1295 (decimal)
Nota:    a base 36 usa 0-9 e A-Z; ZZ é o maior valor de 2 dígitos nesse sistema

Perguntas frequentes

Quais bases são suportadas?

Binária (base 2), octal (base 8), decimal (base 10), hexadecimal (base 16) e bases personalizadas arbitrárias de 2 a 36. Bases acima de 36 exigem um alfabeto estendido e estão fora do escopo aqui.

Como as letras são usadas em bases mais altas?

Bases acima de 10 usam letras: A=10, B=11, … F=15 em hex; A=10 até Z=35 na base 36. Tanto maiúsculas quanto minúsculas funcionam na entrada; a saída é em maiúsculas por padrão.

Como converto um número negativo ou fracionário?

Inteiros negativos funcionam diretamente — a página os armazena internamente como BigInt do JavaScript ou inteiros com sinal. Valores fracionários (ex.: 0,5 em decimal → 0,1 em binário) são suportados, mas limitados a cerca de 15 dígitos significativos por causa da precisão de ponto flutuante.

Qual a diferença entre complemento de dois e magnitude com sinal?

O complemento de dois é como os computadores representam inteiros negativos — o bit mais alto indica negativo e o restante codifica o valor mais um deslocamento. A magnitude com sinal apenas inverte um bit de sinal. A página normalmente exibe magnitude com sinal (sinal estilo decimal), e não o padrão de bits. Use uma calculadora em modo de programador se precisar ver o complemento de dois.

Por que meu resultado em hex tem padding diferente do de outra ferramenta?

Valores hex podem ou não ser preenchidos à esquerda até um limite de byte/palavra. 0xff e 0x000000FF são o mesmo número, apenas exibidos com padding diferente. A página não preenche automaticamente; adicione zeros à esquerda manualmente se o seu contexto (por exemplo, endereço MAC de largura fixa, segmento IPv6) exigir.

Existe limite para o tamanho do número?

O BigInt do JavaScript lida com inteiros arbitrariamente grandes, então a conversão entre bases inteiras funciona para números de qualquer comprimento prático. A conversão fracionária é limitada pelos 15-17 dígitos significativos do tipo Number.

Posso converter endereços IP ou códigos de cor aqui?

Indiretamente: converta cada byte separadamente. Para IPs em formato pontilhado, converta cada octeto de decimal para hex; para códigos de cor #RRGGBB, divida em três pares de bytes. Ferramentas dedicadas a IP e cor cuidam do parsing por você.