Convertendo números negativos em binários:um guia prático para complemento de dois
Por Kevin Beck Atualizado em 30 de agosto de 2022
scyther5/iStock/GettyImages
Números negativos são um conceito familiar, mas convertê-los em binários pode parecer contra-intuitivo se você estiver acostumado apenas com aritmética decimal. No mundo da ciência da computação, entretanto, um método padronizado – complemento de dois – torna essa conversão simples e confiável.
Como os computadores processam informações em um estado binário – 0 (desligado) ou 1 (ligado) – todas as operações aritméticas, incluindo o tratamento de valores negativos, são realizadas usando esses dois dígitos. É por esse design que você verá termos como bit, nybble (4 bits), byte (8 bits), word e long word em toda a documentação técnica.
O que são números binários?
Num sistema binário, cada posição representa uma potência crescente de dois:1, 2, 4, 8, 16 e assim por diante. Uma string binária como 0101 tem um valor decimal de 5 porque os 1s ocupam a 1ª e a 4ª casas (1+4=5). Da mesma forma, o byte 10011100 se traduz em 128+16+8+4=156 em decimal.
O complemento de um número binário é obtido invertendo cada bit – alterando 0s para 1s e 1s para 0s. Por exemplo, o complemento de 10011100 é 01100011.
Exemplos de números binários
Essas conversões simples ilustram como os valores binários são mapeados para números decimais e como a operação de complemento é executada.
Convertendo números negativos em binários
Para codificar um número decimal negativo em binário, os programadores contam com o complemento de dois. Esta técnica instrui o processador a tratar qualquer número binário que comece com 1 como negativo. As etapas de conversão são:
- Converta o valor absoluto do número em binário.
- Calcule seu complemento invertendo cada bit.
- Adicione um ao valor complementado.
Por exemplo, vamos converter –47:
- Binário para +47:00011111
- Complemento:11100000
- Adicione um:11100001
O resultado, 11100001, é a representação em complemento de dois de –47, com o 1 inicial sinalizando um valor negativo. Este método é adotado universalmente em plataformas de hardware e software, garantindo um tratamento consistente de números inteiros assinados.