Supondo números binários de 8 bits com sinal, realize as seguintes subtrações e indique se ocorreu overflow:
Passo 1
O enunciado pede para calcular a subtração entre dois números binários de 8 bits com sinal e dizer se houve overflow. As informações dadas são:
- Minuendo:
. - Subtraendo:
. - Pedido: realizar
considerando representação com sinal em 8 bits e indicar se ocorreu overflow.
Passo 2
Primeiro, vamos fixar como interpretar “números binários de 8 bits com sinal”: vou usar a representação em complemento de dois (padrão em computadores). Regras importantes e úteis:
- O bit mais significativo (MSB, à esquerda) indica o sinal:
= número não negativo, = número negativo. - Para um número de 8 bits em complemento de dois, o intervalo de valores representáveis é
até . - Para números com MSB
(positivos), o valor é a conversão binária usual. - Para números com MSB
(negativos), o valor absoluto é obtido fazendo o complemento de dois (inverter bits e somar 1) e atribuindo sinal negativo. - Para subtração, é prático transformar em adição:
. No resultado de uma soma em complemento de dois, o carry final é descartado; overflow em soma ocorre quando os operandos têm o mesmo sinal e o resultado tem sinal diferente.
Passo 3
Interpretação dos operandos (conversão para decimal, passo a passo):
-
Minuendo
: MSB é , logo é positivo. Converter: Portanto o minuendo éem decimal. -
Subtraendo
: MSB , também positivo. Portanto o subtraendo éem decimal.
Passo 4
Subtração em decimal (checagem rápida):
Vamos transformar
em binário de 8 bits. Decompondo:
Logo o resultado esperado é
.
Passo 5
Fazendo pela via binária com complemento de dois (método prático para prova):
- Calcular o complemento de dois do subtraendo
:
- Inverter bits:
. - Somar
: .
Portanto o complemento de dois deé .
- Somar ao minuendo:
Fazendo a adição bit a bit aparece um carry final, que em complemento de dois é ignorado; o resultado em 8 bits é
, que coincide com
decimal, como vimos.
Passo 6
Detecção de overflow:
- Regra prática: ao somar dois números em complemento de dois, se os dois operandos têm o mesmo sinal e o resultado tem sinal diferente, ocorreu overflow.
- Aqui os operandos originais são
(positivo) e (positivo). O resultado também tem MSB (positivo). Assim não há mudança de sinal inesperada → sem overflow. - Checagem por intervalo: o resultado decimal
está dentro do intervalo representável em 8 bits com sinal ( a ), logo também confirma que não ocorreu overflow.
Resposta
Não ocorreu overflow.