Dados os valores
e
representados por 8 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 dá dois números binários de 8 bits, em complemento de dois:
E pergunta:
a. causa overflow? Por quê?
b. causa overflow? Por quê?
a.
b.
As informações relevantes: são 8 bits em complemento-2 (faixa representável é de
até
). Não começo a resolver ainda; apenas registrei o que foi pedido e os dados.
Passo 2
Como interpretar números em complemento-2 (explicação didática passo a passo).
- Para um número de
bits, o bit mais significativo (MSB) indica o sinal: se o MSB é o número é não-negativo; se o MSB é o número é negativo. - Se o MSB é
, a interpretação é a usual em binário sem sinal. - Se o MSB é
, para achar o valor decimal do número negativo fazemos: - Inverter todos os bits (0↔1).
- Somar
ao resultado (isto é, aplicar a operação “inverter e somar 1”). - Interpretar o valor obtido como magnitude positiva
; o número original vale .
- Exemplo curto: para um byte
: inverter → , somar → , logo .
Vou usar esse procedimento para converter
e
em decimais assinados.
Passo 3
Converter
e
para decimal (passo a passo).
Para
(MSB =
→ negativo):
- Inverter bits:
. - Somar
: . - Calcular o valor decimal de
: - Portanto
Para
(MSB =
→ negativo):
- Inverter bits:
. - Somar
: . - Calcular o valor decimal de
: - Portanto
Resumo decimal:
,
. Lembre-se: a faixa representável em 8 bits complemento-2 é
.
Passo 4
Regra de overflow em complemento-2 (explicação didática):
- Quando somamos dois números em complemento-2 com o mesmo sinal, pode ocorrer overflow se o resultado matemático exceder a faixa
. Em prática rápida na prova, use uma destas verificações equivalentes: - Se os dois operandos têm o mesmo sinal e o resultado tem sinal diferente → houve overflow.
- Alternativa de bit: comparar o carry que entra no bit de sinal com o carry que sai do bit de sinal; se forem diferentes houve overflow.
- Se os operandos têm sinais opostos, não ocorre overflow (a soma fica mais perto de zero).
Vou aplicar essas regras aos casos pedidos.
Passo 5
Calcular
e verificar overflow.
Usando os valores decimais:
Comparando com a faixa
, o valor
está fora da faixa representável em 8 bits, logo matematicamente há overflow.
Agora faço a adição binária em 8 bits para ver o efeito (mostrando o “wrap-around”):
Observações:
- O resultado em 8 bits é
, cujo MSB é (resultado positivo), e seu valor decimal é - Mas o resultado matemático correto é
. O fato de que somamos dois números com MSB = (ambos negativos) e obtivemos um resultado com MSB = (positivo) indica overflow pela regra do mesmo sinal → sinal diferente no resultado. - Também é possível ver que houve carry para fora do byte: o carry que entra no bit de sinal foi diferente do carry que saiu — isto também sinaliza overflow.
Conclusão: para
ocorre overflow.
Passo 6
Calcular
e verificar overflow.
Estratégia prática:
. Já sabemos
, então
. Em binário (8 bits)
é
Somar
e
(mostrando a adição binária):
Verificações:
- Interpretação decimal de
: MSB = → negativo. Para achar a magnitude, inverter e somar 1: Logo . - Usando decimais:
. Esse resultado está dentro da faixa , portanto não há overflow. - Pela regra de sinais: aqui os operandos efetivos na soma são
negativo e positivo (sinais opostos), e soma de sinais opostos não gera overflow.
Conclusão: para
não ocorre overflow.
Passo 7
Recapitulando de modo bem claro e direto (pra você ter a resposta pronta na prova):
-
dá soma matemática , fora da faixa ; em binário de 8 bits ocorreu wrap-around para (positivo). Dois operandos negativos produziram resultado positivo → overflow. -
dá soma matemática , dentro da faixa; o resultado em 8 bits é (que corresponde a ). Operandos com sinais opostos → sem overflow.
Resposta
a) Sim.
b) Não.
b) Não.