Supondo números binários de 8 bits com sinal, realize as seguintes adições e indique se ocorreu overflow:
Passo 1
O enunciado pede que se realize a adição, em aritmética de números binários de 8 bits com sinal, de
e que se indique se ocorreu overflow. Os dados fornecidos são exatamente esses dois bytes (8 bits cada).
Passo 2
Primeiro vamos lembrar (de forma didática) como interpretar e somar números binários de 8 bits com sinal no esquema mais usado: complemento de dois. Regras-chave (explicadas passo a passo):
- Em complemento de dois, o bit mais à esquerda (
) é o bit de sinal: se o número é não-negativo; se o número é negativo. - O valor numérico de um byte
em complemento de dois pode ser obtido por:
- Alternativamente, para obter o valor decimal de um número negativo (quando
), pode-se inverter todos os bits e somar para achar a magnitude, e então pôr sinal negativo. - Regra prática para detectar overflow em complemento de dois: overflow ocorre se, ao somar, os dois operandos têm o mesmo sinal e o resultado tiver sinal diferente. Outra forma equivalente é checar o XOR entre o carry para o bit de sinal e o carry de saída do bit de sinal: se forem diferentes, houve overflow.
Passo 3
Vamos converter cada operando para decimal (para entender o que esperamos do resultado).
Para : usar a fórmula direta dá
Para
Verificação alternativa (inverter + 1): inverter
→
; somar
→
.
é
, então o número é
. Tudo coerente.
Passo 4
Para
o bit de sinal é
, então é positivo. Converter:
Passo 5
Em decimal, a soma deve dar
Isso nos dá um referencial: o resultado esperado em complemento de dois deve ser o valor binário que representa
.
Passo 6
Agora fazemos a adição bit a bit (para quem prefere ver a operação binária explícita). Somando os bits da direita para a esquerda, anotando os carries:
Para ficar bem claro, descrevo cada coluna (bit menos significativo para mais significativo), com o carry entrando na coluna:
- bit
: , carry . - bit
: , carry . - bit
: , carry . - bit
: , carry . - bit
: , carry . - bit
: , carry . - bit
: , carry . - bit
(sinal): , carry de saída .
Resultado binário obtido:
.
Passo 7
Interpretando o resultado
como complemento de dois (8 bits): o bit de sinal é
, então é negativo. Convertemos para decimal para confirmar que bate com o valor esperado
.
Inverter →
. Somar
→
.
Inverter
logo o número é
. Isso coincide com o que esperávamos de
.
Passo 8
Verificação de overflow (explicando a ideia para você saber usar na prova):
- Como regra rápida: se os operandos têm sinais diferentes (um positivo e outro negativo), a soma NÃO pode causar overflow em complemento de dois. Aqui os operandos eram
(sinal 1) e (sinal 0) — sinais diferentes — portanto não houve overflow. - Conferindo pela regra dos carries: o carry para o bit de sinal (entrada na coluna do bit 7) foi
e o carry de saída do bit de sinal foi ; o XOR entre esses carries é , então não houve overflow. Ambas as checagens confirmam: sem overflow.
Resposta
Sem overflow