BrowserTools
Publicidade
Início / Conversores / Conversor de bases numéricas (binário, octal, decimal, hex)

Conversor de bases numéricas (binário, octal, decimal, hex)

Converte números entre binário, octal, decimal, hexadecimal e qualquer base personalizada de 2 a 36.

A carregar Conversor de bases numéricas (binário, octal, decimal, hex)… Se nada acontecer, ativa o JavaScript.

Os sistemas de numeração posicionais representam os números usando um conjunto fixo de símbolos de dígitos, em que o valor de cada dígito depende da sua posição. Os humanos desenvolveram naturalmente a aritmética em base 10 (decimal), quase de certeza porque temos dez dedos. Mas os computadores digitais são construídos a partir de transístores que só podem existir em dois estados, ligado ou desligado, o que faz da base 2 (binário) a linguagem natural do hardware informático. Cada número, instrução e fragmento de texto armazenado em qualquer computador do mundo é, em última análise, codificado como uma sequência de uns e zeros. As outras bases, octal (base 8) e hexadecimal (base 16), surgiram como uma abreviatura conveniente do binário: um dígito octal representa exatamente três dígitos binários, e um dígito hex representa exatamente quatro, o que as torna muito mais compactas para que um humano leia dados binários.

Exemplos

Entrada 255 (decimal)
Saída FF (hex) · 11111111 (binary) · 377 (octal)
Entrada 0xFF (hex)
Saída 255 (decimal)
Entrada 1010 (binary)
Saída 10 (decimal)

Perguntas frequentes

É enviado algum dado para um servidor quando uso esta ferramenta?
Não. Todas as conversões de base são executadas inteiramente dentro do teu navegador usando aritmética BigInt do JavaScript. Nenhum número ou valor que introduzas é alguma vez transmitido para qualquer servidor, o que torna seguro o seu uso com endereços, tokens ou quaisquer dados numéricos sensíveis.
Porque é que os computadores usam binário em vez de decimal?
Os computadores digitais são construídos a partir de transístores, que são interruptores eletrónicos que estão ligados (representando um 1) ou desligados (representando um 0). Usar apenas dois estados torna o hardware extremamente fiável e resistente ao ruído: é muito mais fácil distinguir entre uma tensão alta e uma baixa do que entre dez níveis de tensão diferentes. O binário é o sistema numérico posicional mais simples possível, e encaixa na perfeição com a realidade física do funcionamento dos circuitos digitais.
Porque é que o hexadecimal é usado para os códigos de cor e os endereços de memória?
Cada byte de dados contém 8 bits e pode representar 256 valores (0–255). Dois dígitos hexadecimais podem representar exatamente esses mesmos 256 valores (00–FF), o que torna o hex uma forma compacta e sem perdas de expressar bytes. Uma cor RGB de 24 bits são três bytes, por isso cabe perfeitamente em seis dígitos hex. Um endereço de memória de 64 bits são oito bytes, ou dezasseis dígitos hex. As representações binárias dos mesmos valores seriam quatro vezes mais longas e muito mais difíceis de ler para um humano.
O que têm os números octais a ver com as permissões de ficheiro do Unix?
As permissões de ficheiro do Unix são compostas por três grupos de três bits cada, proprietário, grupo e outros, em que cada bit controla o acesso de leitura, escrita ou execução. Três bits podem representar valores de 0 a 7, o que encaixa perfeitamente com um único dígito octal. Assim, chmod 755 significa que o proprietário tem 7 (rwx = 111 em binário), o grupo tem 5 (r-x = 101) e os outros têm 5. O octal foi escolhido porque era um ajuste natural para os agrupamentos de 3 bits das permissões do Unix.
Posso converter números muito grandes sem perda de precisão?
Sim. Esta ferramenta usa BigInt do JavaScript, que lida com inteiros de tamanho arbitrário com precisão exata. Os números padrão do JavaScript (duplos IEEE-754) só conseguem representar de forma exata inteiros até 2^53 - 1 (9.007.199.254.740.991). O BigInt não tem esse limite, por isso podes converter com segurança chaves criptográficas de 256 bits, valores hash grandes ou qualquer outro inteiro grande sem qualquer arredondamento.
Qual é a história da notação hexadecimal na informática?
A notação hexadecimal na informática foi popularizada pela IBM nos anos sessenta com a introdução da arquitetura IBM System/360, que usava bytes de 8 bits. Antes do System/360, algumas máquinas usavam caracteres de 6 bits e o octal era, na verdade, mais comum. Assim que os bytes de 8 bits se tornaram o padrão universal, perfeitamente divisíveis em dois nibbles de 4 bits, o hexadecimal tornou-se a abreviatura natural. O prefixo 0x para os literais hex foi introduzido pela linguagem de programação C no início dos anos setenta e foi adotado por praticamente todas as linguagens desde então.
Existem casos limite com os zeros à esquerda ou os números muito pequenos?
Nos sistemas numéricos posicionais, os zeros à esquerda não alteram o valor de um número: 007 em decimal continua a ser 7. No entanto, em alguns contextos de programação, um zero à esquerda tem um significado específico: em C, Python 2 e JavaScript, um literal numérico que comece por 0 seguido dos dígitos 0–7 é interpretado como um número octal, não decimal. Por exemplo, 010 em C significa 8, não 10. Esta é uma fonte comum de erros e é por isso que o Python moderno exige o prefixo explícito 0o para os literais octais.
Esta ferramenta suporta o complemento para dois para os números negativos?
A ferramenta apresenta os números negativos com um prefixo de sinal de menos, mas não calcula as representações em complemento para dois. O complemento para dois depende do tamanho de palavra: o mesmo valor -1 é representado como 0xFF em 8 bits, 0xFFFF em 16 bits e 0xFFFFFFFF em 32 bits. Como o tamanho de palavra pretendido depende do contexto, terias de aplicar tu próprio a máscara de bits adequada depois de obteres a representação positiva com esta ferramenta.
Que conversões de base vale a pena saber de cor?
Algumas são valiosíssimas: 0xFF = 255 (valor máximo de um único byte), 0x80 = 128 (ponto médio de um byte), 0x10 = 16 decimal, 0x100 = 256. Em binário, 1111 = 15 = 0xF, e saber que cada dígito hex equivale exatamente a quatro dígitos binários (nibble) é o atalho mais útil para ler despejos hex e endereços de memória.
Qual é um equívoco comum dos principiantes sobre os números binários?
Um equívoco muito comum é o de que os números binários são, de alguma forma, versões 'menos precisas' ou 'aproximadas' dos números decimais. Na realidade, para os inteiros, a conversão entre bases é sempre exata: 10 em decimal é sempre exatamente 1010 em binário, sem qualquer arredondamento. O problema de precisão só surge com os números fracionários (0.1 em decimal não pode ser representado de forma exata em binário), que é a origem dos famosos erros de arredondamento de vírgula flutuante no JavaScript, como 0.1 + 0.2 === 0.30000000000000004.

Sobre Conversor de bases numéricas (binário, octal, decimal, hex)

Os programadores deparam-se com várias bases constantemente. O hexadecimal está em todo o lado: as cores CSS (#ff6600), os endereços de memória nos depuradores (0x7ffee4b3c8d0), os números mágicos dos formatos de ficheiro (0xFF 0xD8 para JPEG), as permissões de ficheiro do Unix em forma numérica (0755) e os endereços MAC de rede usam todos a notação hex. O binário é essencial para compreender as operações ao nível dos bits, os campos de sinalizadores, as máscaras de sub-rede e a codificação de dados. O octal aparece nas cadeias de modo de permissões de ficheiro do Unix, o familiar chmod 755 ou chmod 644, e em alguns protocolos de comunicação antigos. A base 36 (que usa os dígitos 0–9 e as letras A–Z) é usada nos encurtadores de URL e nos esquemas de identificadores únicos que precisam de cadeias compactas e insensíveis a maiúsculas.

Este conversor aceita um valor em qualquer base de 2 a 36 e apresenta-o em simultâneo em binário, octal, decimal, hexadecimal e qualquer base personalizada que especifiques. O cálculo usa o tipo BigInt do JavaScript, que suporta inteiros de precisão arbitrária, pelo que não há limite superior para o tamanho do número que podes converter, ao contrário do tipo Number padrão, que perde precisão para além de 2^53. Todo o processamento é executado no teu navegador, sem comunicação com qualquer servidor.

Algumas nuances a ter em conta: os dígitos hexadecimais usam as letras A–F (ou a–f) para os valores 10–15, e o uso de maiúsculas ou minúsculas não tem significado semântico, mas as convenções diferem: os registos da CPU mostram-se tradicionalmente em maiúsculas, enquanto as cores CSS costumam escrever-se em minúsculas. Ao introduzir valores binários, tem cuidado com os zeros à esquerda: são válidos e mantêm-se na apresentação, mas não afetam o valor numérico. A notação em complemento para dois, usada para representar inteiros negativos no hardware, não é produzida por esta ferramenta porque a sua saída depende do tamanho de palavra (8 bits, 16 bits, 32 bits, 64 bits) do sistema de destino.

Dos dedos aos transístores: porque é que o mundo conta em base 16

Os humanos usaram a base 10 durante milhares de anos quase de certeza simplesmente porque nascemos com dez dedos. As provas arqueológicas apontam para sistemas de contagem que recuam pelo menos 40.000 anos, e os babilónios desenvolveram um sofisticado sistema em base 60 (sexagesimal) por volta do ano 2000 a. C., uma escolha que ainda ecoa nos nossos minutos de 60 segundos e nos círculos de 360 graus. O sistema decimal que usamos hoje foi formalizado na Índia por volta dos séculos V–VI d. C. com a invenção da notação posicional e o conceito do zero, e depois transmitido à Europa através dos matemáticos árabes, dando-nos os numerais indo-árabes que usamos hoje.

A adoção do binário na informática não era inevitável. A máquina analítica mecânica do século XIX de Charles Babbage usava decimal. As propostas informáticas do início do século XX exploraram a base 3 (ternária) e até sistemas eletrónicos em base 10. Uns engenheiros soviéticos da Universidade Estatal de Moscovo chegaram a construir um computador ternário funcional, o Setun, em 1958, argumentando que era mais eficiente do que o binário. Mas o binário acabou por vencer porque exigia a menor complexidade de engenharia: um transístor está ligado ou desligado, ponto final. Qualquer estado adicional implica uma calibração de tensão mais cuidadosa, mais calor e mais erros.

O hexadecimal tornou-se a representação dominante legível por humanos dos dados binários graças ao System/360 da IBM de 1964, que padronizou o byte de 8 bits como a unidade fundamental de informação. Assim que os bytes se tornaram universais, o facto de dois dígitos hex corresponderem exatamente a um byte tornou-se irresistível para os engenheiros que liam despejos de memória e valores de registos. O prefixo 0x para marcar os literais hex foi introduzido pela linguagem C por volta de 1972 e espalhou-se essencialmente a todas as linguagens principais que se seguiram: C++, Java, Python, JavaScript, Go, Rust, Swift e mais. Hoje, o hex está tão enraizado na cultura informática que os designers de cor, os engenheiros de rede e os investigadores de segurança pensam e comunicam em base 16 como uma segunda natureza.

Publicidade
Publicidade
Publicidade