Representação Numérica em Computadores

Limitações de Representação em Computadores

Ao contrário da representação de números no papel, que pode usar tantos dígitos quantos forem necessários (limitada por recursos como papel e paciência), um computador digital possui um espaço finito para guardar informações. Toda informação é, em última instância, representada por um número, geralmente em formato binário, devido à facilidade de realizar cálculos na base 2.

Em um computador, os números são processados por grupos de algarismos binários de uma só vez, e não bit por bit. A unidade natural de processamento de um sistema digital é chamada de palavra de dado, que é uma sequência de bits com tamanho fixo, processada em conjunto. O tamanho dessa palavra pode variar entre sistemas (por exemplo, processadores de 32 ou 64 bits). O bit mais à esquerda é o Most Significant Bit (MSB), e o bit mais à direita é o Least Significant Bit (LSB).

A capacidade de representação é determinada pela base e pelo número de dígitos ou bits. Em uma base β com n casas (dígitos), existem βⁿ possibilidades de valores. Na base 2, com n bits, temos 2ⁿ possibilidades.


Inteiros Sem Sinal

Para números inteiros sem sinal em palavras binárias com w bits, os valores que podem ser representados variam de 0 até 2w − 1. Por exemplo, com 3 bits, podemos representar números de 0 (000₂) até 7 (111₂). O próximo número na sequência, que não caberia em w bits, seria 2w (representado como 100…000₂ com w+1 bits).


Números Negativos

Para representar números negativos, é necessário reservar espaço na palavra binária para informações sobre o sinal, além dos próprios algarismos do número. Existem várias abordagens para isso:

Representação Sinal-Magnitude:

  • Esta representação utiliza um bit específico para indicar o sinal do número.
    • Sinal +: o bit de sinal é 0.
      • 0110₂ = 6₁₀
    • Sinal −: o bit de sinal é 1.
      • 1110₂ = -6₁₀
  • O restante dos bits representa a magnitude (valor absoluto) do número.

Vantagens: É simples de entender e de implementar.

Desvantagens: Apresenta duas representações para o zero (+0 e −0). Isso complica a aritmética, pois o sinal precisa ser tratado separadamente durante as operações de soma e subtração. Com w bits, o menor número representável é −(2w-1-1) e o maior é 2w-1-1

Representação em Complemento de 1:

  • A conversão para esta representação ocorre apenas para números negativos.
  • Para converter, basta inverter os níveis lógicos (bits) do número (0s viram 1s e 1s viram 0s).
    • 0111₂ = 7₁₀
    • 1000₂ = -7₁₀
  • O bit mais significativo (MSB) ainda indica o sinal: 0 se positivo e 1 se negativo.

Vantagens: A conversão é simples, e as operações de soma e subtração são realizadas da mesma forma que para números sem sinal.

Desvantagens: Assim como no sinal-magnitude, possui duas representações para o zero (+0 e −0).

  • A subtração A − B pode ser realizada como A + (−B), onde −B é o complemento de 1 de B, com a adição de 1 ao final (chamado de end-around carry).

 Representação em Complemento de 2:

  • Esta representação é amplamente utilizada em computadores.
  • O Complemento de 2 de um número binário é obtido calculando-se o Complemento de 1 e, em seguida, adicionando 1 unidade ao resultado.

Vantagens: Possui apenas uma representação para o zero, o que simplifica a lógica de hardware. Além disso, permite representar um número negativo a mais em comparação com as outras representações. As operações de soma e subtração são simples e unificadas, feitas da mesma forma que para números sem sinal.

Desvantagens: Pode não ser tão intuitivo para humanos, e as comparações diretas de valores (como determinar qual número é maior) podem ser menos evidentes em relação à representação em módulo e sinal.

  • Com w bits, o intervalo não é simétrico.
    O menor número representável é −2(w−1), e o maior é 2(w−1) − 1.
    • Ou seja, com 4 bits podemos representar de -8 até +7.
  • A operação A − B é realizada como A + (complemento de 2 de B), isto é:
    • A − B = A + (¬B + 1), desprezando o carry-out final.

Como analisar os Números em Complemento de 2

Se o bit mais significativo (primeiro da esquerda) for 0, o número é positivo (igual à conversão normal para decimal).

Se o bit mais significativo for 1, o número é negativo.
Para saber qual valor ele representa:

  1. Identifique o valor mínimo que pode ser representado:
    • Com 3 bits, o número 100 representa −4.
  2. Some o valor dos bits restantes (como se fossem positivos).

Exemplo:
111 → bit mais significativo é 1 → é negativo
Valor de 111 = (−4) + 2 + 1 = −1

Outro exemplo:
101 → (−4) + 1 = −3

Também é possível aplicar o método de complemento de 2 em um número que já está nesse padrão a fim de transformá-lo em sua versão positiva.

Etapas para transformar um número em complemento de 2:

  1. Complemento de 1: inverte os bits de B.
    Exemplo: complemento de 1 de 01010010₂10101101₂
  2. Complemento de 2: (complemento de 1) + 1.
    Exemplo: 10101101₂ + 1₂ = 10101110₂


Extensão de Bits

Quando se precisa representar um número em uma palavra de comprimento maior que o comprimento original, por exemplo, um número inicialmente representado em 4 bits extendido para 8 bits, o processo de extensão de bits depende conforme a representação utilizada:

 

Inteiros Sem Sinal: A extensão é feita simplesmente adicionando-se zeros à esquerda do número original para preencher os bits adicionais.

Sinal-Magnitude: A extensão mantém o bit de sinal original e preenche os bits intermediários com zeros, preservando a magnitude do número.

Complemento de 2: A extensão é feita copiando-se o bit mais significativo (o bit de sinal) para todas as novas posições à esquerda. Isso garante que o valor numérico (positivo ou negativo) seja preservado corretamente na nova representação.


Overflow / Underflow

Um erro de overflow (para números muito grandes) ou underflow (para números muito pequenos) ocorre toda vez que uma operação aritmética (como a soma) resulta em um número que precisa de mais bits do que os disponíveis na representação que está sendo utilizada.

Detecção de Overflow/Underflow:

Esses erros só ocorrem ao somar dois números que possuem o mesmo sinal (ambos positivos ou ambos negativos).

Em soma binária com números em complemento de dois, o overflow pode ser detectado de duas formas:

  • Comparando os bits de sinal:
    Se os dois operandos têm o mesmo bit de sinal, mas o resultado tem bit de sinal diferente, ocorreu overflow.
  • Comparando os dois últimos carry-outs (da penúltima e da última posição):
    Se esses dois carry-outs são diferentes, ocorreu overflow.
    • Esse é o método mais usado em circuitos, pois é fácil de implementar com portas XOR.
  • Um exemplo de overflow em complemento de dois com 3 bits é somar +1 (001₂) a +3 (011₂): o resultado esperado é +4, mas com 3 bits, 011 + 001 resulta em 100₂, que em complemento de 2 representa −4, indicando um overflow.
  • A conversão de um inteiro sem sinal para um inteiro com sinal também pode causar overflow se o bit mais significativo do número sem sinal estiver sendo usado e não houver um bit livre para o sinal.
    • 1000₂ = 8₁₀
      Complemento de 2: 1000₂

Exercícios

1. Representação de Números em Computadores

Pergunta: Por que os computadores utilizam principalmente números binários para representar informações?

  • a) Porque é a base mais intuitiva para humanos
  • b) Porque facilita a realização de cálculos e processamento digital
  • c) Porque permite representar números negativos sem restrições
  • d) Porque economiza espaço em papel

b) Porque facilita a realização de cálculos e processamento digital


2. Inteiros Sem Sinal

Pergunta: Qual é o maior número que pode ser representado com 3 bits sem sinal?

  • a) 3
  • b) 6
  • c) 7
  • d) 8

2³ − 1 = 7

c) 7


3. Representação Sinal-Magnitude

Pergunta: Como o número -6 é representado em sinal-magnitude usando 4 bits?

  • a) 0110₂
  • b) 1110₂
  • c) 1001₂
  • d) 1010₂

O bit de sinal é 1 para negativo, os demais bits representam a magnitude (6 = 110)

b) 1110₂


4. Complemento de 1

Pergunta: Qual é o complemento de 1 do número binário 0101₂?

  • a) 1010₂
  • b) 0101₂
  • c) 1100₂
  • d) 1001₂

Inverte todos os bits: 0 → 1, 1 → 0

0101₂ → 1010₂

a) 1010₂


5. Complemento de 2

Pergunta: Qual é o complemento de 2 em binário do número 5?

  • a) 1010₂
  • b) 1011₂
  • c) 0101₂
  • d) 0110₂

Conversão para binário: 5 → 0101

Complemento de 1: 0101 → 1010

Adicionar 1: 1010 + 1 = 1011

b) 1011₂


6. Intervalo de Valores em Complemento de 2

Pergunta: Qual é o intervalo de números representáveis com 4 bits em complemento de 2?

  • a) 0 a 15
  • b) −7 a 7
  • c) −8 a 7
  • d) −15 a 15

Com w bits: -2w-1 a 2w-1 − 1

−2³ a 2³ − 1 → −8 a 7

c) −8 a 7


7. Extensão de Bits

Pergunta: Como se realiza a extensão de bits para um número negativo representado em complemento de 2 de 4 bits para 8 bits?

  • a) Adicionando zeros à esquerda
  • b) Copiando o bit mais significativo para os novos bits à esquerda
  • c) Invertendo todos os bits
  • d) Mantendo apenas os 4 bits originais

b) Copiando o bit mais significativo para os novos bits à esquerda


8. Overflow em Complemento de 2

Pergunta: Ao somar +1 (001₂) e +3 (011₂) usando 3 bits em complemento de 2, qual é o resultado e o que ocorre?

  • a) 100₂, overflow
  • b) 100₂, sem overflow
  • c) 110₂, overflow
  • d) 110₂, sem overflow

001 + 011 = 100₂ → representa −4 em 3 bits

→ overflow ocorre

a) 100₂, overflow