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.