Dados os valores
e
representados por 4 bits em Complemento-2, responda às seguintes questões:
a.
causa overflow? Por quê?
b. X-Y causa overflow? Por quê?
a.
b. X-Y causa overflow? Por quê?
Passo 1
O enunciado pede duas coisas separadas:
a. Determinar se causa overflow quando
e
são representados em complemento-2 com 4 bits.
b. Determinar se causa overflow nas mesmas condições.
a. Determinar se
b. Determinar se
Informações fornecidas (copiadas do enunciado):
Nenhuma outra informação foi fornecida; considera-se portanto representação padrão em complemento-2 com
bits.
Passo 2
Vamos lembrar, passo a passo, como interpretar números em complemento-2 com
bits (aqui
) e como detectar overflow:
- Intervalo de valores representáveis em complemento-2 com
bits:
Logo o intervalo é
.
-
Interpretação de um vetor de bits de
bits (com sendo o bit mais significativo / sinal): - Se
, o número é positivo e seu valor é o valor binário usual:
- Se
, o número é negativo e seu valor é
Uma forma prática de obter o valor negativo: inverter os bits e somarpara achar o módulo, depois por o sinal negativo. - Se
-
Como fazer uma subtração
em complemento-2: calcule , ou seja, . -
Regras práticas para detectar overflow em soma de complementos-2:
- Se se somam dois números com o mesmo sinal e o resultado tem sinal diferente, houve overflow.
- 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
e
em decimal (para termos referência numérica):
Como o bit de sinal é
,
é positivo. Calculamos o valor:
Portanto
.
Também tem bit de sinal
, é positivo:
Portanto
.
Resumo numérico:
,
. Lembremos que o máximo representável é
.
Passo 4
Parte (a): calcular
em binário e verificar overflow.
Primeiro a soma binária com
bits:
Vou mostrar a adição bit a bit (do LSB para o MSB) com os carries:
- bit0:
, carry . - bit1:
, carry . - bit2:
, carry . - bit3 (MSB):
, carry de saída .
Resultado em 4 bits:
. (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
em complemento-2 de 4 bits:
- Como o MSB é
, é negativo. Para obter o valor: inverter e somar 1: Logo representa . Assim a soma binária modular deu .
Compare com a soma aritmética esperada:
. O resultado real
não cabe no intervalo
: excede o máximo
. Em vez disso, o campo de 4 bits mostra
, sinal claro de que houve overflow.
Usando a regra dos sinais: somamos dois números positivos (ambos têm bit de sinal
) e o resultado tem bit de sinal
(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
, e o carry que saiu do MSB (carry final) foi
— 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
está fora do intervalo dos 4 bits. - Em complemento-2 somamos dois positivos e obtivemos um negativo (
), 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
e verificar overflow.
Fazemos
. Primeiro calculamos o complemento-2 de
(ou seja,
) em 4 bits.
Inverte os bits:
Soma 1:
Logo
que em decimal representa
(confere: inverter
dá
, mais 1 dá
, então valor
).
Agora somamos
com
:
Mostrando os carries bit a bit (LSB → MSB):
- bit0:
, carry . - bit1:
, carry . - bit2:
, carry . - bit3 (MSB):
, carry de saída .
O resultado em 4 bits é
. Interpretando, como MSB é
, esse é
. A soma aritmética esperada é
— bate perfeitamente e está dentro do intervalo
.
Verificação das regras de overflow:
- Pela regra dos sinais: somamos um número positivo (
, sinal ) e um número negativo ( , sinal ). 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
e o carry que saiu do MSB também foi — 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
, obtivemos
, 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.
b) Não.