Complemento para dois

No mundo de hoje, Complemento para dois tornou-se um tema de grande relevância e interesse para um amplo espectro de pessoas. Com o avanço da tecnologia e da globalização, Complemento para dois tornou-se cada vez mais importante na sociedade moderna. Quer se trate de um fenómeno histórico, de uma personalidade proeminente, de um tema atual ou de qualquer outro aspecto relevante, Complemento para dois tem captado a atenção de indivíduos de diferentes culturas, idades e contextos. Neste artigo exploraremos as diferentes perspectivas e facetas de Complemento para dois, analisando o seu impacto, as suas implicações e as suas possíveis repercussões em diferentes áreas.

Em computação, complemento para dois ou complemento de dois é um tipo de representação binária de números com sinal amplamente usada nas arquiteturas dos dispositivos computacionais modernos.

O complemento de dois de um número de N bits é definido como o complemento em relação a 2N. Para calcular o complemento de dois de um número, basta subtrair este número de 2N, que em binário é representado por um seguido de N zeros. Outro método é calcular o complemento de um e somar um ao valor.

O bit mais significativo (MSB) é o que informa o sinal do número. Se este dígito for o número é positivo, e se for é negativo.

Os números são escritos da seguinte forma:

  • Positivos: Sua magnitude é representada na sua forma binária direta, e um bit de sinal 0 é colocado na frente do MSB.
    • (bit 0) + o número em binário.
    • Exemplos: 0001 (+1), 0100 (+4) e 0111 (+7)
  • Negativos: Sua magnitude é representada na forma de complemento a 2, e um bit de sinal 1 é colocado na frente do MSB.
    • Pegamos o número em binário e "invertemos" (0100 invertendo têm-se 1011) e
    • Somamos um ao valor "invertido" (1011 + 0001 = 1100).

Desta maneira, só existe uma representação para o número zero ().

As vantagens do uso do complemento de 2 é que existe somente um zero e que as regras para soma e subtração são as mesmas. A desvantagem é o fato de ser um código assimétrico, porque o número de representações negativas é maior que o número de representações positivas. Por exemplo, com oito bits em complemento para 2 podemos representar os números decimais de -128 a +127.

Algoritmos para obtenção do complemento de 2

Para se obter o complemento de 2 de um número binário, a regra geral nos diz para subtrair cada algarismo de 2. Por causa da particularidade dos números binários (subtrair de 1 cada bit é o mesmo que inverter todos os bits - e é o mesmo que tirar o complemento de 1), para obter o C2 de um número obtemos primeiro o complemento de um (invertendo os bits) e depois somamos 1 ao resultado, já que (2-N) = (1-N)+1

Existe outra maneira de usar o complemento a dois. Vamos supor que temos um número binário 101110, começando da direita para esquerda você vai repetindo o número (para a esquerda) até encontrar o número 1, depois que encontrá-lo repita-o e passe a inverter o restante. Continuado o nosso exemplo:

Número: 101110
  • Passo 1 - 0 (o primeiro número da direita)
  • Passo 2 - 10 (Aqui encontramos o primeiro 1, então vamos repetí-lo e continuar)
  • Passo 3 - 010 (Invertemos o número 1 da terceira posição da direita para a esquerda)
  • Passo 4 - 0010
  • Passo 5 - 10010
  • Passo 6 - 010010 (o resultado do complemento)
Outro número: 1101
  • Passo 1 - 1 (O primeiro número da direita para a esquerda é o 1, então repetimos e passamos a inverter o restante)
  • Passo 2 - 11
  • Passo 3 - 011
  • Passo 4 - 0011

Exemplos

Tabela exemplo para números binários (4 digitos) representados em complemento de 2:

Decimal Binário s/ sinal Binário (Compl. 2)
-8 - 1000
-7 - 1001
-6 - 1010
-5 - 1011
-4 - 1100
-3 - 1101
-2 - 1110
-1 - 1111
0 000 0000
1 001 0001
2 010 0010
3 011 0011
4 100 0100
5 101 0101
6 110 0110
7 111 0111

Note que com quatro dígitos (bits) não é possível representar o número 8 positivo, porém o número 8 negativo (-8) permanece. Assim conseguimos representar 16 valores com quatro bits (2^4)

Ver também

  1. Wakerly, John F. (1990). Digital Design: Principles and Practices (em inglês). : Prentice Hall 
  2. «Two's Complement». Elsevier. 1977: 157–158. Consultado em 20 de dezembro de 2022 
  3. Koren, Israel (8 de outubro de 2018). «Computer Arithmetic Algorithms». doi:10.1201/9781315275567. Consultado em 20 de dezembro de 2022