Dados os valores \mathrm{X}=0110_{2} e \mathrm{Y}=0011_{2} representados por 4 bits em Complemento-2, responda às seguintes questões:
a. \mathrm{X}+\mathrm{Y} causa overflow? Por quê?
b. X-Y causa overflow? Por quê?

Passo 1

O enunciado pede duas coisas separadas:
a. Determinar se X+Y causa overflow quando X e Y são representados em complemento-2 com 4 bits.
b. Determinar se X-Y causa overflow nas mesmas condições.
Informações fornecidas (copiadas do enunciado):
X = 0110_2
Y = 0011_2
Nenhuma outra informação foi fornecida; considera-se portanto representação padrão em complemento-2 com 4 bits.

Passo 2

Vamos lembrar, passo a passo, como interpretar números em complemento-2 com n bits (aqui n=4) e como detectar overflow:
  • Intervalo de valores representáveis em complemento-2 com 4 bits:
\text{mínimo} = -2^{3} = -8,\qquad \text{máximo} = 2^{3}-1 = 7.íá
Logo o intervalo é [-8,\,7].
  • Interpretação de um vetor de bits de 4 bits b_3 b_2 b_1 b_0 (com b_3 sendo o bit mais significativo / sinal):
    • Se b_3=0, o número é positivo e seu valor é o valor binário usual:
    \text{valor} = b_3\cdot(-)\\ ?\\ \text{(não)}\quad\Rightarrow\quad \text{valor} = b_2 2^2 + b_1 2^1 + b_0 2^0.ã
    • Se b_3=1, o número é negativo e seu valor é
    \text{valor} = -\bigl(2^{4}-\text{valor\_em\_binário}\bigr).á
    Uma forma prática de obter o valor negativo: inverter os bits e somar 1 para achar o módulo, depois por o sinal negativo.
  • Como fazer uma subtração A-B em complemento-2: calcule A + (\text{complemento-2 de } B), ou seja, A + (-B).
  • Regras práticas para detectar overflow em soma de complementos-2:
    1. Se se somam dois números com o mesmo sinal e o resultado tem sinal diferente, houve overflow.
    2. Em termos de carries: se o carry que entra no bit de sinal (penúltima posição quando somamos os bits de posição 2 para 3) é diferente do carry que sai do bit de sinal (carry out do MSB), então há overflow. Se são iguais, não há overflow.
Vou usar essas regras para analisar os itens (a) e (b), mostrando os cálculos binários passo a passo.

Passo 3

Interpretando X e Y em decimal (para termos referência numérica):
X = 0110_2.
Como o bit de sinal é 0, X é positivo. Calculamos o valor:
0110_2 = 0\cdot2^3 + 1\cdot2^2 + 1\cdot2^1 + 0\cdot2^0 = 4 + 2 = 6.
Portanto X = +6.
Y = 0011_2.
Também tem bit de sinal 0, é positivo:
0011_2 = 0\cdot2^3 + 0\cdot2^2 + 1\cdot2^1 + 1\cdot2^0 = 2 + 1 = 3.
Portanto Y = +3.
Resumo numérico: X=+6, Y=+3. Lembremos que o máximo representável é +7.

Passo 4

Parte (a): calcular X+Y em binário e verificar overflow.
Primeiro a soma binária com 4 bits:
\begin{array}{r} \;0110_2\\\\ +\,0011_2\\hline \;1001_2 \end{array}
Vou mostrar a adição bit a bit (do LSB para o MSB) com os carries:
  • bit0: 0+1=1, carry 0.
  • bit1: 1+1=0, carry 1.
  • bit2: 1+0+\text{carry }1 = 0, carry 1.
  • bit3 (MSB): 0+0+\text{carry }1 = 1, carry de saída 0.
Resultado em 4 bits: 1001_2. (Não consideramos um quinto bit persistente além dos 4 bits; o carry final é descartado quando falamos do campo de 4 bits, mas é usado na regra do carry-in/out.)
Interpretando 1001_2 em complemento-2 de 4 bits:
  • Como o MSB é 1, é negativo. Para obter o valor: inverter e somar 1: \text{inverso de }1001_2 = 0110_2,\quad 0110_2 + 1 = 0111_2 = 7.Logo 1001_2 representa -7. Assim a soma binária modular deu -7.
Compare com a soma aritmética esperada: +6 + +3 = +9. O resultado real +9 não cabe no intervalo [-8,7]: excede o máximo +7. Em vez disso, o campo de 4 bits mostra -7, sinal claro de que houve overflow.
Usando a regra dos sinais: somamos dois números positivos (ambos têm bit de sinal 0) e o resultado tem bit de sinal 1 (negativo). Isso é sinal de overflow.
Usando a regra dos carries: o carry que entrou no bit de sinal (carry gerado na soma dos bits de peso 2^2 para 2^3) foi 1, e o carry que saiu do MSB (carry final) foi 0 — são diferentes; portanto há overflow. Ambas as regras concordam.

Passo 5

Conclusão para (a): houve overflow. Motivos resumidos (já demonstrados):
  • A soma aritmética 6+3=9 está fora do intervalo [-8,7] dos 4 bits.
  • Em complemento-2 somamos dois positivos e obtivemos um negativo ( 1001_2), o que indica overflow.
  • O carry que entrou no bit de sinal é diferente do carry que saiu do MSB, também indicando overflow.

Passo 6

Parte (b): calcular X-Y e verificar overflow.
Fazemos X - Y = X + (-Y). Primeiro calculamos o complemento-2 de Y (ou seja, -Y) em 4 bits.
Y = 0011_2.
Inverte os bits: 1100_2.
Soma 1: 1100_2 + 1 = 1101_2.
Logo
-\,Y = 1101_2,
que em decimal representa -3 (confere: inverter 1101 0010, mais 1 dá 0011=3, então valor -3).
Agora somamos X = 0110_2 com -Y = 1101_2:
\begin{array}{r} \;0110_2\\\\ +\,1101_2\\hline \;0011_2 \end{array}
Mostrando os carries bit a bit (LSB → MSB):
  • bit0: 0+1=1, carry 0.
  • bit1: 1+0=1, carry 0.
  • bit2: 1+1=0, carry 1.
  • bit3 (MSB): 0+1+\text{carry }1 = 0, carry de saída 1.
O resultado em 4 bits é 0011_2. Interpretando, como MSB é 0, esse é +3. A soma aritmética esperada é 6-3=3 — bate perfeitamente e está dentro do intervalo [-8,7].
Verificação das regras de overflow:
  • Pela regra dos sinais: somamos um número positivo ( X, sinal 0) e um número negativo ( -Y, sinal 1). Soma de sinais diferentes não gera overflow (pois o resultado tende para o sinal do maior módulo e fica no intervalo). Aqui não houve troca inesperada de sinal.
  • Pela regra dos carries: o carry que entrou no bit de sinal (da adição dos bits de menor peso) foi 1 e o carry que saiu do MSB também foi 1 — iguais — então NÃO há overflow.

Passo 7

Resumo explicativo final (curto e motivador): no (a) somamos dois positivos e o resultado apareceu negativo nos 4 bits, sinal clássico de overflow; no (b) fizemos X+(-Y), obtivemos 0011_2=+3, dentro do intervalo, sem diferença entre carry-in e carry-out, então sem overflow. Você mandou bem pedindo passo a passo — esse procedimento (traduzir, somar bit a bit, checar sinais e carries) é o que funciona rápido na prova.

Resposta

a) Sim.
b) Não.

Exercícios relacionados