FAVORITAR
FecharPlease login

Complemento de 2

Para realizar as operações de subtração e adição, a maior parte dos computadores modernos utiliza o sistema de complemento de 2 para representar números negativos em binário.

Em binário essa representação difere da forma decimal e algumas operações precisam ser realizadas para se ter uma correspondência correta. Neste artigo entenderemos como representar números positivos e negativos em binário e o papel do complemento de 2 nisto.

Complemento de 2

Primeiramente, é preciso relembrar que na representação binária possuímos apenas dois dígitos para escrever números: 0 e 1. Assim, para diferenciar números positivos de negativos utilizamos o bit de sinal que será o bit mais significativo, ou seja, o MSB é aquele que irá informar o sinal do número:

  • Se este dígito for 0, o número é positivo
  • Se for 1, o número é negativo

Nesse contexto, os números são escritos da seguinte forma:

Números positivos

Seu valor é representado na forma binária direta, sendo acrescido um bit de sinal 0 na frente do MSB do número binário.

Instrução: 

(bit 0) + o número em binário.

Exemplos: 

complemento de 2

Números negativos

Seu valor é representado na forma de complemento a 2 e um bit de sinal 1 é colocado na frente do MSB.

O complemento a 2 é realizado da seguinte forma:

  1. Invertemos todos os bits do número binário, ou seja, tudo que é 0 vira 1 e vice-versa;
  2. Somamos um (0001) ao valor invertido.

Assim, é preciso entender dois pontos importantes:

  • Quando trabalhamos com complemento de 2 se o número binário tem dígito 1 no MSB significa que ele é negativo;
  • Para saber o valor que aquele número representa, precisamos realizar a operação de inverter e depois somar um.

Instrução: 

(bit 1 no MSB significa número negativo) e o número em binário precisa ser invertido e somado com 1 para determinar seu valor.

Exemplos:

complemento de 2

Para demonstrar o complemento de 2 na prática, na Tabela 1 temos a representação de todos os valores possíveis que podem ser escritos com 4 bits em binário, decimal, hexadecimal e complemento de 2.

BinárioDecimalHexadecimalComplemento de 2
0000000
0001111
0010222
0011333
0100444
0101555
0110666
0111777
100088-8
100199-7
101010A-6
101111B-5
110012C-4
110113D-3
111014E-2
111115F-1
Tabela 1 – Equivalências entre os sistemas de numeração binário, decimal, hexadecimal e complemento de 2.

Note que na representação em decimal os números vão de 0 a 15 enquanto que na representação em complemento de 2 vão de -8 a 7. 

Isso também pode ser observado quando estamos programando, na linguagem C temos os tipos uint_8t e int_8t, que tem o sentido de:

uint8_t: 

  • “u” é de unsigned, ou seja, sem sinal
  • “int” de inteiro
  • “8_t” quantidade de bits

int8_t:

  • a ausência do “u” indica tipo com sinal
  • “int” de inteiro
  • “8_t” quantidade de bits

Assim, quando escolhemos o tipo uint8_t podemos escrever valores de 0 a 255, já no tipo int8_t os valores vão de -128 a 127.

Referências

TOCCI, R.; WIDMER, N.; MOSS, G. Sistemas Digitais – Princípios e Aplicações. [S.l.]: Pearson Education Limited, 2011.

Saiba mais

Números binários: o que você precisa saber

Entendendo a Aritmética em Ponto Fixo

Bits em Linguagem C – Conceito e Aplicação

Outros artigos da série

<< Operações com sistemas bináriosÁlgebra Booleana >>
Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.
Home » Hardware » Sistemas Digitais » Complemento de 2

JUNTE-SE HOJE À COMUNIDADE EMBARCADOS