quinta-feira, 13 de março de 2014

Transformação de Números Binários - Negativos

Números Binários Negativos

            Os computadores lidam com números positivos e números negativos, sendo necessário encontrar uma representação para números com sinal negativo. Existe uma grande variedade de opções, das quais nesta seção serão apresentadas apenas três para representar valores negativos:
  • Sinal e amplitude/magnitude (S+M);
  • Complemento de 1;
  • Complemento de 2.

Sinal e Amplitude/Magnitude (S + M)

            Como o próprio nome indica, a representação sinal e amplitude utiliza um bit para representar o sinal, o bit mais à esquerda: 0 para indicar um valor positivo, 1 para indicar um valor negativo.
           

Complemento de 1

            Na representação em complemento de 1 invertem-se todos os bits de um número para representar o seu complementar: assim, se converte um valor positivo para um negativo, e vice-versa. Quando o bit mais à esquerda é 0, esse valor é positivo; se for 1, então é negativo.
Exemplo:

10010 = 011001002 (com 8 bits)

Invertendo todos os bits:

100110112 = –10010

            O problema desta representação é que existem 2 padrões de bits para o 0, havendo assim desperdício de representação:

010 = 000000002 = 111111112


Complemento de 2

            A solução encontrada consiste em representar os números em complemento de 2. Para determinar o negativo de um número, inverte-se todos os seus bits e soma-se uma unidade.
Exemplo:

Representação binária
10110 = 011001012 (com 8 bits)

Invertendo todos os bits
100110102

Somando uma unidade
100110102 + 1 = 100110112 = –10110

A representação em complemento para 2 tem as seguintes características:
  • o bit da esquerda indica o sinal;
  • possui processo para converter um número de positivo para negativo e de negativo para positivo;
  • o 0 tem uma representação única: todos os bits a 0;
  • a gama de valores que é possível representar com n bits é -2n-1 … 2n-1-1.
Exemplo:
            Qual o número representado por 111001002 (com 8 bits)? Como o bit da esquerda é 1 este número é negativo.
Invertendo todos os bits:

000110112

Somando uma unidade:

000110112 + 1 = 000111002 = 2810

Logo:

111001002 = – 2810

Nenhum comentário:

Postar um comentário