MiServe DevTools

Os seus autocolantes

Fixe aqui as ferramentas. Ficam guardadas neste navegador.

Conversor de bases numéricas

Converta um inteiro de qualquer tamanho entre binário, octal, decimal, hexadecimal e qualquer base de 2 a 36, com as respetivas formas em complemento para dois.

Comprimento em bits do valor absoluto
Bits necessários como inteiro com sinal (complemento para dois)
Como inteiro de largura fixa (complemento para dois)
LarguraHexBinárioLido com sinalLido sem sinal
8 bits
16 bits
32 bits
64 bits

Funciona no seu navegador. Nada do que cola é enviado.

Sobre esta ferramenta

O mesmo número em bases diferentes

Uma base, ou radix, é o número de dígitos distintos que uma notação posicional usa. O decimal tem dez, o binário tem dois, o octal tem oito e o hexadecimal tem dezasseis, recorrendo às letras a a f para os valores de dez a quinze. As bases até 36 continuam pelo alfabeto até ao z.

O binário é a forma como o hardware guarda os números. O hexadecimal é a sua escrita compacta, já que um dígito hexadecimal corresponde exatamente a quatro bits e dois correspondem a um byte. O octal ainda se usa nas permissões de ficheiros Unix, em que cada dígito corresponde a três bits.

Todos os campos desta página mostram o mesmo inteiro. Edite qualquer um deles e os outros acompanham.

O que pode escrever

Os dígitos podem ser separados por espaços ou underscores, como em 1111_0000 ou 1 000 000, e o número pode começar com um sinal de menos. Os prefixos 0b, 0o e 0x selecionam binário, octal e hexadecimal sempre que a letra não seja ela própria um dígito do campo: 0xff escrito no campo decimal é lido como 255, enquanto 0b1 no campo hexadecimal é o número hexadecimal B1.

A conversão usa o BigInt do JavaScript, um tipo de inteiro de precisão arbitrária, por isso nada é arredondado. O único limite de tamanho é o que o motor JavaScript do navegador impõe a um BigInt, e um número que o exceda é assinalado no respetivo campo. Os números acima de 9 007 199 254 740 991, a partir do qual os números normais do JavaScript começam a perder precisão, são convertidos com exatidão. Só são suportados inteiros, não frações.

Números negativos e complemento para dois

Os campos mostram um número negativo como um sinal de menos seguido do seu valor absoluto. Os computadores guardam-no de outra forma: em complemento para dois, um valor negativo é guardado como esse valor mais dois elevado à largura. Em 8 bits essa potência é 256, por isso -1 é guardado como 255, que é ff, e -128 como 128, que é 80.

A tabela mostra o padrão de bits para 8, 16, 32 e 64 bits sempre que o valor cabe, e o que esse padrão significa quando é lido de volta como inteiro com sinal e sem sinal. É por isso que 255 e -1 partilham o padrão ff em 8 bits.

Perguntas

Como converto binário em decimal à mão?

Cada dígito binário vale uma potência de dois, a começar em 1 à direita. Some as potências em que o dígito é 1: 1011 é 8 + 2 + 1, ou seja, 11.

Porque é que o hexadecimal é tão usado em programação?

Um dígito hexadecimal representa exatamente quatro bits, por isso um byte tem sempre dois dígitos hexadecimais. Isso torna os dumps de memória, as cores, os hashes e as máscaras de bits muito mais curtos do que em binário, e continua a ser fácil fazer a correspondência com os bits.

Qual é o maior número que este conversor consegue converter?

A ferramenta não impõe nenhum limite próprio. Usa inteiros de precisão arbitrária, por isso números com milhares de dígitos são convertidos com exatidão. Entradas muito longas demoram mais a calcular, e o motor JavaScript de cada navegador tem um tamanho máximo para um único inteiro. Um número acima desse tamanho é assinalado no respetivo campo.

O que é o complemento para dois?

É a forma como quase todos os computadores guardam inteiros com sinal. O bit mais significativo tem um peso negativo, por isso um valor de 8 bits vai de -128 a 127 e -1 é guardado como oito bits a 1.

Mais ferramentas de Codificação