sexta-feira, 21 de janeiro de 2011

Complementos

Complementos



O conceito de complemento é usado quando há necessidade de representação de números negativos no processamento digital. Consideram-se, por exemplo, números binários de 8 dígitos (ou bits) e apenas números inteiros.

Se não há necessidade de números negativos, os 8 bits podem representar, em binário, números de 00000000 a 11111111 (0 a 255 em decimal ou 0 a 28 − 1). Totalizando portanto 256 números.

Um método de indicar números negativos é considerar o bit mais significativo (mais à esquerda) como bit de sinal: 0 indica nulo ou positivo e 1, negativo.

Assim, no conjunto considerado de 8 bits, o maior positivo é 27 − 1 = 127. Com o zero, tem-se agora 127 + 1 = 128 para zero e positivos. Sobram portanto 128 para os negativos e o menor deles deve ser −128.


O complemento de um é uma das formas de se obter o correspondente negativo para um número na convenção de sinais mencionada. É obtido pela simples inversão de todos os dígitos no número, como se a função lógica NÃO fosse aplicada a cada. Exemplo:

Seja o número decimal 45. Em binário de 8 bits: 00101101.

Complemento de 1: 11010010.

Se o complemento indica o negativo do número, a soma de ambos deve ser nula: +45 + (−45) = 0.

Mas o resultado da soma 00101101 + 11010010 é 11111111.

Para obter zero, precisa-se somar 1 e desprezar o dígito "vai um " (Cout). O método foi usado em máquinas mais antigas.


O complemento de dois é obtido pela adição de 1 ao complemento de um. Exemplo para o número 45:

Em binário de 8 bits: 00101101.

Complemento de 1: 11010010.

Adicionando 1, tem-se o complemento de 2: 11010010 + 1 = 11010011.

Se, agora, o número é somado ao seu complemento de dois: 00101101 + 11010011 = 100000000. Esse resultado pode ser considerado zero porque o 1 à esquerda é o "vai um" (Cout) e não mais pertence ao conjunto de 8 bits (é a nona posição na seqüência da direita para a esquerda).

Portanto, o complemento de dois é um método mais consistente e certamente o mais usado nas atuais máquinas digitais.

Obs: para o número zero, a operação com complemento de dois é (00000000) = 11111111 + 1 = 100000000. O resultado, como seria esperado, é também zero, de acordo com o comentário do parágrafo anterior.

Sem comentários:

Enviar um comentário