Introdução à programação e aos algoritmos

João Araujo Ribeiro · Capítulo 11 de 103

Páginas do PDF

Introdução à programação e aos algoritmos

1.5.4 Complemento a 2

Como na representação com bit de sinal, números iniciados com 0, ou seja, números cujo bit mais à esquerda é 0, são números positivos e aqueles iniciados com 1 são negativos. Os números positivos são convertidos diretamente de decimal para binário e os números negativos são representados pelo complemento a 2 do número equivalente positivo.

O complemento a 2 de um número binário com n bits é definido

como o complemento com respeito a 2n, ou seja, o resultado da subtração desse número de 2n. Você pode pensar no complemento a dois de um número como o quanto falta para completar 2n. Vejamos um exemplo para ilustrar esse conceito.

Se você quiser converter o número –10 em seu complemento a 10

dois usando 8 bits, você terá de pensar em quanto falta de 1010 (seu valor absoluto) para atingir 2n. A conta é fácil na base decimal: 28 – 10 ⇒ 256 – 10 = 246. Isso quer dizer que 246 é a representação em complemento a 2 de –10. Lembre-se de que, na nossa representação em complemento a 2, o maior inteiro com 8 bits é +127.

Transformando tudo em binário 10 = 00001010 e –10 = 10 2 10

11110110 2. Converta 246 em binário para conferir este resultado.

Mas, é óbvio, esse processo é muito trabalhoso para encontrar a

representação em complemento a 2 de um número negativo. Existe uma maneira mais fácil que pode ser implementada facilmente com circuitos eletrônicos. A receita é a seguinte: troque cada bit 1 por 0 e cada 0 por 1 no número binário original. Em seguida some 1 ao resultado.

Vejamos um exemplo: queremos obter a representação em

complemento a 2 de –10 , usando uma representação com 8 bits. 10

 

Primeiro convertemos 10 para binário ⇒ 0000 1010 10

Invertemos os bits ⇒ 1111 0101 Somamos 1 ⇒ +1

Obtemos –10 em complemento a 2 ⇒ 1111 0110

 

Essa representação tem uma vantagem adicional: podemos fazer a subtração somando! Assim, como exemplo, vamos fazer a conta 15 – 10.

Em binário 15 = 0000 1111 . Vamos somar este número com a 10 2 representação binária de –1010 = 1111 01102. Fazendo a soma, temos:

 

que é exatamente 5 em decimal, ou seja, conseguimos simplificar o hardware do nosso processador, que deverá apenas somar dois

números binários para fazer somas e subtrações. A Figura 1.8 apresenta um exemplo com 4 bits para binários em complemento a

2, enquanto a Figura 1.9 resume o resultado dessas codificações para 4 bits.

 

Figura 1.8 Números binários de 4 bits em complemento a 2.

Figura 1.9 Números binários de 4 bits em várias representações.

 

EXERCÍCIO 1.12

 

Escreva o binário equivalente a –215 em sinal/valor, complemento a 1 e

complemento a 2, usando 16 bits para a codi cação.

 

EXERCÍCIO 1.13

 

Escreva o binário equivalente a +215 em sinal/valor, complemento a 1 e

complemento a 2, usando 16 bits para a codi cação.

 

EXERCÍCIO 1.14

 

Escreva o binário equivalente a –215 em excesso–511. Qual o menor n possível

para escrever este número? Quantos bits são necessários neste caso?

 

EXERCÍCIO 1.15

 

Escreva os binários equivalentes a 120 e a 8, usando 8 bits, e execute a soma

desses números binários. Dependendo da representação usada para números

inteiros, essa soma vai causar o chamado transbordamento (over ow). Como

interpretar esse resultado de acordo com as representações de números binários

negativos?