O que é complemento de dois
Complemento de dois é a representação dominante de inteiros com sinal. Com uma largura fixa, o bit mais à esquerda tem peso negativo e os demais mantêm potências de dois positivas. Em oito bits, 11010110 representa -42, enquanto os mesmos bits valem 214 sem sinal.
A largura faz parte do valor. 11111111 é -1 em oito bits, mas 255 sem sinal; com dezasseis bits, 0000000011111111 é +255. Por isso a ferramenta exige 8, 16, 32 ou 64 bits antes de interpretar a entrada.
Como usar
Defina primeiro a interpretação e a largura; só depois introduza o valor.
- Escolha decimal com sinal, decimal sem sinal ou cadeia de bits exata.
- Selecione 8, 16, 32 ou 64 bits.
- Introduza o valor; cadeias binárias devem ter exatamente a largura escolhida.
- Clique em Converter para ver bits, hexadecimal e as duas leituras decimais.
- Confirme a largura ao comparar com registos, protocolos ou ficheiros.
Exemplos por largura
O mesmo padrão muda de significado conforme largura e interpretação.
| Entrada | Saída | Explicação |
|---|---|---|
| -1, 8 bits | 11111111 | Todos os bits em 1 formam a representação canónica de -1. |
| -128, 8 bits | 10000000 | Menor inteiro com sinal em oito bits. |
| 127, 8 bits | 01111111 | Maior positivo com sinal em oito bits. |
| 214 sem sinal, 8 bits | 11010110 = -42 com sinal | Os bits não mudam; muda a interpretação. |
| -32768, 16 bits | 1000000000000000 | Limite inferior de 16 bits. |
| 18446744073709551615 sem sinal, 64 bits | 64 uns = -1 com sinal | Máximo sem sinal ocupa todos os bits. |
Formato e intervalos
Decimal com sinal aceita valores de -2^(w-1) a 2^(w-1)-1. Decimal sem sinal aceita valores de 0 a 2^w-1. A cadeia binária aceita apenas 0 e 1 e deve conter exatamente w bits após remover espaços e sublinhados.
Prefixos e extensões não são inferidos. Ao mudar de 8 para 16 bits, introduza novamente o valor desejado; isso evita confundir extensão de sinal com preenchimento por zeros.
- 8 bits com sinal: -128 a 127; sem sinal: 0 a 255.
- 16 bits com sinal: -32768 a 32767.
- 32 e 64 bits são calculados exatamente com BigInt.
- Hexadecimal sempre recebe zeros até a largura completa.
Como o padrão é calculado
Para um valor negativo x com largura w, o padrão sem sinal é 2^w + x. O resultado cai entre 0 e 2^w-1 e pode ser formatado com exatamente w bits.
Ao descodificar, se o bit de sinal for zero, o valor com sinal é o valor sem sinal. Se for um, subtrai-se 2^w. A interpretação sem sinal é sempre a magnitude direta do padrão.
BigInt evita arredondamento em 64 bits, onde muitos valores não cabem com exatidão em Number.
Usos práticos
Complemento de dois aparece sempre que a largura do inteiro é definida.
Registos e depuradores
Leia palavras de memória e valores exibidos em hexadecimal.
Protocolos binários
Valide campos int8, int16, int32 e int64.
Emulação e compiladores
Teste extensão de sinal, overflow e constantes.
Interoperabilidade
Compare linguagens que exibem o mesmo padrão como valor com ou sem sinal.
Erros e limites
Largura incorreta é a principal causa de resultados diferentes do esperado.
Valor fora do intervalo
A ferramenta rejeita em vez de truncar os bits mais altos.
Bits a mais ou a menos
Uma cadeia exata precisa ter a largura selecionada.
Misturar sinal e magnitude
O bit mais significativo não é um sinal separado; participa no valor em complemento de dois.
Esquecer extensão de sinal
Ao ampliar um negativo, replique o bit de sinal, não preencha com zeros.
Diferenças para ferramentas próximas
Representação, mudança de base e operação bit a bit são tarefas distintas.
Decimal para binário
Pode mostrar uma magnitude sem largura; aqui o padrão é fixo e tem sinal.
Calculadora bit a bit
Opera sobre padrões; este conversor interpreta um único padrão.
IEEE 754
Ponto flutuante usa sinal, expoente e fração, não complemento de dois.
Conversor de bases
Preserva o inteiro matemático sem impor um intervalo com sinal.