Sabendo que os números fornecidos abaixo são representados internamente ao computador em registros de tamanho fixo de 8 bits; que destes, o bit mais significativo é reservado para o sinal (0: positivo, 1: negativo), e que os negativos são representados em “complemento a 2 “, faça as operações solicitadas no sistema binário fornecendo os resultados nas notações binária, hexadecimal e decimal e informando se estes são positivos ou negativos e ainda se a operação é possível ou gera erro.
X = -(69)16 Y = -(15)16
a) X + Y
b) X - Y
c) Y - X
d) X div Y (divisão inteira)
Soluções para a tarefa
Podemos afirmar que:
a) Não gera erro.
X + Y -> 10001100 + 00011101 -> 10101001 -> A9 -> -( 01010110 + 1)₂ -> - 1010111₂ = -57₁₆ = -87₁₀ //
b) Apresenta overflow.
X - Y -> X + (-Y) -> X + (¬ Y + 1) -> 10001100 + ( ¬ 00011101 + 1 ) -> 10001100 + ( 11100010 + 1 ) -> 10001100 + 11100011 -> 1)01101111 //
1101111₂ -> 6F₁₆ -> 111₁₀ //
c) Apresenta erro. 91₁₆ = 145₁₀
Y - X -> Y + (-X) -> Y + (¬ X + 1) -> 00011101 + (¬10001100 + 1) -> 00011101 + (01110011 + 1) -> 00011101 + 01110100 -> 10010001 -> 9F //
10010001 -> - (01101110 + 1)₂ -> - 1101111₂ = - 6F₁₆ = - 111₁₀ //
d) Não gera erro.
10001100 div 00011101 ...
10001100 div 00011101 -> (1+0) ∘ ( (¬10001100+1) div 00011101) -> (1) ∘ ( (01110011 + 1) div 00011101) ->
(1) ∘ ( 01110100 div 00011101)
(1) ∘ ( 01110100 div 00011101) -> (1) ∘ 00000100 -> ¬00000100 + 1 -> 11111011 + 1 -> 11111100 -> FC