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
- Digite um número em qualquer um dos quatro campos: binário, octal, decimal ou hexadecimal.
- Os outros campos são atualizados na hora. Prefixos como 0x, 0b e 0o são aceitos.
- 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.
| Decimal | Hexadecimal | Binário | Octal |
|---|---|---|---|
0 | 0x0 | 0000 | 0o0 |
1 | 0x1 | 0001 | 0o1 |
2 | 0x2 | 0010 | 0o2 |
3 | 0x3 | 0011 | 0o3 |
4 | 0x4 | 0100 | 0o4 |
5 | 0x5 | 0101 | 0o5 |
6 | 0x6 | 0110 | 0o6 |
7 | 0x7 | 0111 | 0o7 |
8 | 0x8 | 1000 | 0o10 |
9 | 0x9 | 1001 | 0o11 |
10 | 0xA | 1010 | 0o12 |
11 | 0xB | 1011 | 0o13 |
12 | 0xC | 1100 | 0o14 |
13 | 0xD | 1101 | 0o15 |
14 | 0xE | 1110 | 0o16 |
15 | 0xF | 1111 | 0o17 |
16 | 0x10 | 0001 0000 | 0o20 |
32 | 0x20 | 0010 0000 | 0o40 |
64 | 0x40 | 0100 0000 | 0o100 |
100 | 0x64 | 0110 0100 | 0o144 |
127 | 0x7F | 0111 1111 | 0o177 |
128 | 0x80 | 1000 0000 | 0o200 |
255 | 0xFF | 1111 1111 | 0o377 |
256 | 0x100 | 0001 0000 0000 | 0o400 |
512 | 0x200 | 0010 0000 0000 | 0o1000 |
1000 | 0x3E8 | 0011 1110 1000 | 0o1750 |
1024 | 0x400 | 0100 0000 0000 | 0o2000 |
4096 | 0x1000 | 0001 0000 0000 0000 | 0o10000 |
65535 | 0xFFFF | 1111 1111 1111 1111 | 0o177777 |
Algo não está funcionando ou um resultado parece errado? Relatar um problema com esta ferramenta