Calculadora de complemento de dois
O que é o complemento de dois?
O complemento de dois é a forma padrão pela qual os computadores armazenam inteiros com sinal — números que podem ser positivos ou negativos — usando um número fixo de bits. Em vez de reservar um símbolo separado para o sinal de menos, os números negativos são codificados de modo que a adição binária comum simplesmente funcione, sem nenhum tratamento especial para o sinal. Quase toda CPU moderna representa inteiros dessa maneira.
Esta calculadora recebe um inteiro decimal e uma largura de bits (8, 16 ou 32 bits) e mostra seu padrão em complemento de dois tanto em binário quanto em hexadecimal.
Como funciona?
Para uma largura escolhida de bits, cada valor é armazenado como um padrão de bits sem sinal:
- Se o número for não negativo, seu padrão é simplesmente o binário de , preenchido com zeros à esquerda até bits.
- Se o número for negativo, seu padrão é o binário de .
Como é negativo no segundo caso, é um valor positivo menor que , portanto sempre cabe em bits. O bit mais significativo (mais à esquerda) acaba sendo para todo número negativo e para todo número não negativo — esse bit atua como o sinal.
Fórmula
O resultado é então escrito com exatamente dígitos binários (ou dígitos hexadecimais).
Exemplos resolvidos
Exemplo 1: um número positivo
Codifique em bits. Como , o padrão é apenas em binário, preenchido até oito dígitos:
Exemplo 2: menos um
Codifique em bits. Como , calcule :
Menos um é sempre uma sequência ininterrupta de uns, qualquer que seja a largura.
Exemplo 3: menos cinco
Codifique em bits. Calcule :
Tabela de referência (8 bits)
| Decimal | Binário em complemento de dois | Hex |
|---|---|---|
| 5 | 00000101 | 0x05 |
| 0 | 00000000 | 0x00 |
| -1 | 11111111 | 0xFF |
| -5 | 11111011 | 0xFB |
| 127 | 01111111 | 0x7F |
| -128 | 10000000 | 0x80 |
Notas
- Um inteiro com sinal de bits cobre o intervalo de a ; bits cobrem de a ; bits cobrem cerca de bilhões. Valores fora do intervalo escolhido dão a volta em módulo .
- O bit inicial é o sinal: marca um número não negativo e marca um negativo.
- Para converter um número comum não negativo em binário sem um bit de sinal, use o conversor de decimal para binário, ou o conversor de sistema numérico geral para outras bases.
Perguntas frequentes
O que é -1 em complemento de dois?
Em qualquer largura são todos uns: (0xFF) para 8 bits, (0xFFFF) para 16 bits, e assim por diante.
Como obter o complemento de dois de um número negativo à mão?
Escreva o valor absoluto do número em binário, inverta cada bit e some um. Para em 8 bits: é , invertendo dá , e somando um dá — o mesmo resultado que .
Por que a largura de bits importa?
A largura fixa quantos bits o padrão ocupa e, portanto, o intervalo de números que você pode armazenar. O mesmo valor decimal produz uma sequência mais longa de zeros ou uns à esquerda à medida que a largura aumenta.