UTILS.
100% no navegador
🔢

Conversor de Complemento de Dois

Converta inteiros com sinal de/para binário e hex em complemento de dois com largura de 4, 8, 16, 32 ou 64 bits, com complemento de um e interpretação sem sinal.

Digite um número ou padrão de bits acima.

Sobre esta ferramenta

O Conversor de Complemento de Dois codifica um inteiro com sinal em sua representação binária e hexadecimal de complemento de dois em uma largura de bits que você escolhe (4, 8, 16, 32 ou 64 bits), e decodifica um padrão binário ou hex de volta ao valor com sinal que ele representa. Ele usa BigInt em todo o processo, então valores de 64 bits são tratados exatamente sem perda de precisão.

Para uma largura de N bits, a faixa com sinal é −2^(N−1) a 2^(N−1)−1. Para codificar um decimal d: se d for não negativo, o padrão é simplesmente d; se d for negativo, o padrão é 2^N + d (equivalentemente, inverta todos os bits de |d| e some 1). A ferramenta produz o binário de N bits preenchido com zeros, o hex de N/4 dígitos, o complemento de um (NOT bit a bit), e a interpretação sem sinal dos mesmos bits, e sinaliza um erro de overflow quando um valor não cabe na largura selecionada.

Para decodificar, cole um padrão binário ou hex e a ferramenta lê seu bit superior: se o bit mais significativo estiver ativado, o valor é padrão − 2^N (negativo), caso contrário é o próprio padrão. Ela sempre mostra as leituras com sinal e sem sinal lado a lado, que é exatamente a ambiguidade que o complemento de dois resolve no nível do hardware. Todo o cálculo é local ao seu navegador.

Perguntas frequentes

Qual a faixa para cada largura de bits?
Uma largura de N bits representa valores com sinal de −2^(N−1) a 2^(N−1)−1. Então 8 bits abrange −128 a 127, 16 bits −32768 a 32767, e 32 bits cerca de ±2.1 bilhões. Valores fora da faixa acionam um aviso de overflow.
Como um número negativo é codificado?
Pegue a magnitude, inverta cada bit (complemento de um), e some 1. Equivalentemente, o padrão é igual a 2^N mais o número negativo. Por exemplo, −1 em 8 bits é 11111111, e −42 é 11010110.
Por que mostrar também o valor sem sinal?
O mesmo padrão de bits tem duas leituras: com sinal (complemento de dois) e sem sinal. Mostrar ambas deixa claro que, por exemplo, o padrão de 8 bits 11111111 é −1 com sinal mas 255 sem sinal — a interpretação depende de como o hardware o trata.
Ele consegue lidar com valores de 64 bits exatamente?
Sim. O conversor usa aritmética BigInt de precisão arbitrária, então padrões de 64 bits e seus valores com sinal são calculados exatamente sem o arredondamento que os números comuns do JavaScript introduziriam além de 2^53.

Mais ferramentas