Saltar para o conteúdo

Complemento para dois

Origem: Wikipédia, a enciclopédia livre.

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.[1]

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.[2]

Algoritmos para obtenção do complemento de 2

[editar | editar código-fonte]

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[3]

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

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)

Ícone de esboço Este artigo sobre computação é um esboço. Você pode ajudar a Wikipédia expandindo-o.
  1. Wakerly, John F. (1990). Digital Design: Principles and Practices (em inglês). [S.l.]: 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 
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy