Conversor de bases numéricas

Converta números inteiros entre binário, octal, decimal, hexadecimal e qualquer base até 36, com complemento de dois e códigos de texto.

O formulário interativo fica disponível quando o JavaScript está ativo.

Como usar

Digite um número inteiro e escolha a base em que ele está escrito, ou deixe Automático: aí 0x indica hexadecimal, 0o octal, 0b binário e qualquer outra coisa decimal. O resultado mostra o número em decimal, binário, octal e hexadecimal, cada um com seu botão de copiar, e em outra base à sua escolha entre 2 e 36. Espaços e sublinhados entre os dígitos são ignorados, então 1_000_000 funciona.

Bases acima de 10 usam letras depois do dígito 9: a vale 10, f vale 15 e z vale 35, por isso 36 é a base mais alta. Números de qualquer tamanho são convertidos com exatidão. Os números comuns do JavaScript só são exatos até 9.007.199.254.740.991 (2⁵³ − 1); acima disso, muitos conversores arredondam os últimos dígitos sem avisar.

Para números negativos, o resultado mostra também o complemento de dois, a forma como os processadores guardam inteiros com sinal, em 8, 16, 32 ou 64 bits. Um inteiro com sinal de n bits vai de −2ⁿ⁻¹ a 2ⁿ⁻¹ − 1, então 8 bits vão de −128 a 127; um número que não cabe é sinalizado, e um positivo que só cabe sem sinal aparece como inteiro sem sinal. Os dígitos binários podem ser agrupados de quatro em quatro ou de oito em oito para facilitar a leitura de valores longos; o botão de copiar sempre copia sem espaços.

O modo texto transforma um texto nos bytes que o UTF-8 usa para guardá-lo, em binário, decimal e hexadecimal, com o ponto de código Unicode de cada caractere, e transforma códigos de bytes de volta em texto. Tudo é calculado no seu navegador.

Exemplo

−5 em complemento de dois de 8 bits é 11111011, FB em hexadecimal: o processador guarda 256 − 5 = 251.

  • 255Binário 11111111, octal 377, hexadecimal FF.
  • -5 em 8 bitsComplemento de dois 11111011, 0xFB.
  • 90071992547409932⁵³ + 1, convertido com exatidão: hexadecimal 20000000000001. Um número comum do JavaScript viraria …992.
  • € no modo textoBytes UTF-8 E2 82 AC: três bytes para um único caractere, ponto de código U+20AC.

Perguntas frequentes

Por que o hexadecimal usa letras?

A base 16 precisa de dezesseis dígitos, e de 0 a 9 são só dez. As letras de a a f valem de 10 a 15, então ff é 15 × 16 + 15 = 255. Maiúsculas e minúsculas significam a mesma coisa.

O que é complemento de dois?

A forma usual como os computadores guardam inteiros negativos: em n bits, um número negativo −x é guardado como 2ⁿ − x. Com 8 bits, −1 é 11111111 e −128 é 10000000. Assim o processador soma e subtrai do mesmo jeito números com e sem sinal.

Por que alguns conversores erram com números grandes?

Porque usam os números comuns do JavaScript, que só são exatos até 9.007.199.254.740.991. Esta ferramenta usa aritmética de inteiros de qualquer tamanho, então mantém todos os dígitos.

O que significam 0x, 0o e 0b?

São prefixos usados em linguagens de programação como JavaScript e Python: 0x para hexadecimal, 0o para octal e 0b para binário. No modo Automático a ferramenta os lê; com uma base escolhida, também aceita o prefixo correspondente.

O que eu digito é enviado para algum lugar?

Não. A conversão acontece no seu navegador.

Ferramentas relacionadas