Entendendo Números Negativos em Binário: Sinal-Magnitude, Complemento e Complemento de Dois
A subtração pode ser transformada em adição tratando o subtraendo como um valor negativo; por exemplo, 7 − 5 torna-se 7 + (−5).
Uma vez dominada a representação binária positiva, o próximo passo é codificar números negativos para que a subtração possa ser realizada usando a mesma rotina de adição.
Em decimal, um sinal de menos prefixa o dígito mais significativo (ex.: −5). Em hardware binário, temos apenas dois estados — alto ou baixo — então devemos codificar o sinal dentro do padrão de bits.
Neste contexto, não temos um terceiro símbolo como um sinal de "menos". Uma solução é reservar um bit que represente o sinal matemático:

Usar bits para propósitos além de seu peso posicional pode levar a confusão; por exemplo, 1101₂ pode ser lido como treze a menos que o bit inicial seja tratado como sinal.
Primeiro, decida a largura total de bits necessária para acomodar a maior magnitude, então garanta que todas as operações permaneçam dentro dessa largura.
No exemplo abaixo, restringimos o intervalo a −7 (1111₂) até +7 (0111₂) tratando o bit mais significativo como sinal, evitando assim má interpretação.
Codificar −5 como 1101₂ ilustra o sistema de sinal-magnitude, onde o bit inicial denota sinal em vez de valor, trocando pureza posicional por praticidade.
O bit mais significativo indica o sinal; os bits restantes retêm valores posicionais padrão (potências de dois).
Complementação
Embora sinal-magnitude seja conceitualmente simples, complica a adição binária. Como adicionar −5 (1101₂) a outro número usando adição ordinária?
Criar um algoritmo de adição personalizado derrota o propósito; seria equivalente à subtração manual, negando qualquer benefício computacional.
Uma alternativa — complementação — permite que números negativos sejam adicionados usando o método padrão de adição binária e alinha-se naturalmente com pesos posicionais.
Neste esquema, o bit mais significativo ainda delimita o intervalo, mas agora carrega um peso de posição negativo (ex.: −8). Por exemplo, −5 é codificado da seguinte forma:

Com os três bits da direita capazes de representar magnitudes de 0 a 7, e o bit mais à esquerda representando 0 ou −8, podemos representar qualquer inteiro de −7 (1001₂ = −8 + 1 = −7) a +7 (0111₂ = 0 + 7 = 7).
Valores positivos permanecem inalterados, mas valores negativos requerem a operação de complemento.

Números binários negativos na coluna da direita são a soma dos três bits da direita mais o negativo-oito do bit mais à esquerda, então não seguem a mesma progressão dos números positivos.
Em vez disso, os três bits da direita devem ser definidos de forma que, quando somados ao valor de posição negativo-oito, produzam o total negativo desejado.
Complemento de Dois
Os três bits da direita são o complemento de dois do correspondente positivo. Por exemplo:

Com o bit de peso negativo como o quarto bit (−8), o complemento de dois para qualquer número positivo é o valor necessário para adicionar a −8 para obter o equivalente negativo desse número.
Calcular um complemento de dois é simples: inverta todos os bits (o complemento de um) e adicione um. Por exemplo, para obter o complemento de dois de cinco (101₂), primeiro inverta para 010₂, então adicione um para obter 011₂, que representa −5 em complemento de dois de três bits.
Gerar o complemento de dois funciona da mesma forma se você manipular todos os bits, incluindo o bit mais significativo, de uma vez. Por exemplo, converter 0101₂ (cinco) para negativo cinco:
Inverter todos os bits → 1010₂; adicionar um → 1011₂, representando −5 em complemento de dois de quatro bits.
É crucial que a posição do bit de peso negativo seja fixada antes de realizar qualquer conversão de complemento de dois. Se o oitavo bit fosse o bit de peso negativo (10000000₂), o complemento de dois de 0000101₂ seria 1111011₂, representando −5 em complemento de dois de oito bits.
Assim, em um sistema de oito bits, +5 é 00000101₂ e −5 é 11111011₂.
PLANILHAS RELACIONADAS:
- Planilha de Matemática Binária
Tecnologia industrial
- Contador Binário de 3 Bits com Timer 555 e Flip-Flops 4027
- Numeração Octal e Hexadecimal: Guia Prático para Engenheiros
- Números vs. Numeração: Entendendo a Distinção e Seu Impacto Prático
- Subtração Binária Usando Complemento de Dois
- Entendendo Realimentação Negativa em Op-amps: Seguidores de Tensão e Estabilidade
- Dominando Algoritmos de Coleção Java: Ordenação, Embaralhamento e Mais
- Dominando Tipos Numéricos em C++: Guia Prático
- MATLAB – Números: Tipos, Armazenamento e Conversão
- Números em Python: Entender Tipos de Dados Numéricos Imutáveis
- Construa Sua Primeira Aplicação Go no PLCnext: Guia para Iniciantes