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₁₀
- Sinal +: o bit de sinal é 0.
- 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:
- Identifique o valor mínimo que pode ser representado:
- Com 3 bits, o número 100 representa −4.
- 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:
- Complemento de 1: inverte os bits de B.
Exemplo: complemento de 1 de 01010010₂ → 10101101₂ - 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₂
- 1000₂ = 8₁₀
