Conversor de bases numéricas

Converta entre binário, octal, decimal e hexadecimal.

Sobre esta ferramenta

Digite um número em binário, octal, decimal ou hexadecimal e veja-o em todas as outras bases, junto com os bits agrupados em bytes. Lida com inteiros arbitrariamente grandes e reconhece os prefixos 0x, 0b e 0o.

Como usar

  1. Digite um número em qualquer um dos quatro campos: binário, octal, decimal ou hexadecimal.
  2. Os outros campos são atualizados na hora. Prefixos como 0x, 0b e 0o são aceitos.
  3. Veja o painel de bits para ver o valor dividido em bytes.

Perguntas

Qual o tamanho máximo de número que ele aceita?
Qualquer tamanho. Usa o BigInt do JavaScript, então não há limite de 32 ou 64 bits nem arredondamento.
Por que números hexadecimais começam com 0x?
É uma convenção do C, hoje usada pela maioria das linguagens, para indicar que os dígitos são hexadecimais. Da mesma forma, 0b marca binário e 0o marca octal.
Onde o octal ainda é usado?
Principalmente para permissões de arquivos Unix, em que 755 significa rwxr-xr-x. Cada dígito octal corresponde exatamente a três bits de permissão.
Como converter hex para texto ASCII?
Esta ferramenta converte números, não strings. Em um texto em hex, cada par de dígitos é um byte, que você procura em uma tabela ASCII: 48 65 6C 6C 6F forma “Hello”. Na linha de comando, echo 48656c6c6f | xxd -r -p transforma uma string hex de volta em texto.
Dá para converter frações ou números com casas decimais?
Não, só números inteiros. Frações são complicadas em binário de qualquer forma: 0.1 em decimal não tem forma binária exata e se repete infinitamente, e é por isso que 0.1 + 0.2 não dá exatamente 0.3 na maioria das linguagens de programação. Os valores de ponto flutuante são armazenados no formato IEEE 754, não como inteiros binários simples.
Qual é o maior número que cabe em 8, 16, 32 ou 64 bits?
Sem sinal, é 2ⁿ − 1: 255, 65.535, 4.294.967.295 e 18.446.744.073.709.551.615. Os valores com sinal chegam a mais ou menos a metade disso, como 2.147.483.647 para 32 bits. Os números do JavaScript só são exatos até 9.007.199.254.740.991, então esta ferramenta usa BigInt para continuar precisa além disso.

Como converter binário para decimal, e de volta

Cada dígito de um número binário vale uma potência de dois, começando por 1 à direita. Para converter 1011 em decimal, some as posições que têm 1: 8 + 0 + 2 + 1 = 11. O hexadecimal funciona do mesmo jeito com potências de 16, então 0x2F é 2 × 16 + 15 = 47. O octal usa potências de oito. Uma regra vale para todas as bases: cada dígito vezes a base elevada à sua posição.

Para fazer o caminho inverso, divida pela base de destino repetidamente e anote os restos do último para o primeiro. Dividir 11 por 2 várias vezes deixa os restos 1, 1, 0 e 1, que lidos de trás para frente dão 1011. Com este conversor de bases numéricas, basta digitar em qualquer campo e os outros três se atualizam. No código, o JavaScript tem parseInt(text, 2) e n.toString(16), e o Python tem int(text, 2) e hex(n).

Por que os programadores usam hexadecimal?

Um dígito hex representa exatamente quatro bits, então dois dígitos hex descrevem um byte. Isso faz do hex um jeito compacto e legível de escrever dados binários: 11111111 é FF, e qualquer valor de 32 bits cabe em oito caracteres. Ele aparece em endereços de memória, códigos de cor como #FF8800, hashes, endereços MAC, code points Unicode como U+1F680 e nos dumps de bytes impressos por ferramentas como xxd e hexdump.

O painel de bits aqui mostra essa relação diretamente. O valor é completado até bytes inteiros, e cada grupo de oito bits aparece com seu valor hex de dois dígitos embaixo. 48879 vira 10111110 11101111, com os rótulos BE e EF, e é por isso que se lê como 0xBEEF. Isso facilita conferir flags, máscaras de bits e limites de bytes. A Calculadora de sub-redes aplica a mesma visão binária a endereços IPv4 e máscaras de rede.

Como funcionam os números negativos em binário: complemento de dois

Os computadores geralmente armazenam inteiros com sinal em complemento de dois. Para escrever −1 em 8 bits, inverta cada bit de 1 e some um: 00000001 vira 11111110, e mais um dá 11111111, ou 0xFF. O bit mais alto funciona como sinal, então um valor de 8 bits com sinal vai de −128 a 127, enquanto os mesmos bits lidos sem sinal vão de 0 a 255. O padrão de bits é idêntico; só a interpretação muda.

Este conversor trabalha com inteiros simples, não com registradores de largura fixa. Digite -5 e você obtém -101 em binário e -5 em hex, com o sinal de menos mantido na frente em vez de um padrão em complemento de dois. Para obter o padrão de 8 bits de um número negativo, some 256 antes: −5 + 256 = 251, que é 0xFB. Para 32 bits, some 4294967296. Espaços e underscores são ignorados, então 1111_1011 funciona como entrada.

Tabela de decimal, hexadecimal, binário e octal

Os números que você mais vai consultar, nas quatro bases.

DecimalHexadecimalBinárioOctal
00x000000o0
10x100010o1
20x200100o2
30x300110o3
40x401000o4
50x501010o5
60x601100o6
70x701110o7
80x810000o10
90x910010o11
100xA10100o12
110xB10110o13
120xC11000o14
130xD11010o15
140xE11100o16
150xF11110o17
160x100001 00000o20
320x200010 00000o40
640x400100 00000o100
1000x640110 01000o144
1270x7F0111 11110o177
1280x801000 00000o200
2550xFF1111 11110o377
2560x1000001 0000 00000o400
5120x2000010 0000 00000o1000
10000x3E80011 1110 10000o1750
10240x4000100 0000 00000o2000
40960x10000001 0000 0000 00000o10000
655350xFFFF1111 1111 1111 11110o177777

Algo não está funcionando ou um resultado parece errado? Relatar um problema com esta ferramenta