Realize a operação indicada e enumere quantos módulos somadores completos ou subtratores completos, são necessários para realizar a operação. Efetue em binário as operações, usando a aritmética do complemento de 2 :
89_{16}-10_{16}

Passo 1

O enunciado pede que eu execute a operação
89_{16} - 10_{16}
usando aritmética em binário com o complemento de 2, e que eu indique quantos módulos somadores completos (ou subtratores completos) são necessários para realizar a operação. Dados fornecidos: os dois operandos em hexadecimal \,89_{16} e \,10_{16}.

Passo 2

Converto cada dígito hexadecimal em 4 bits binários e escolho representação com 8 bits (cada dois dígitos hex = 8 bits):
8 = 1000_2,\quad 9 = 1001_2,\quad 1 = 0001_2,\quad 0 = 0000_2.
Logo
89_{16} = 10001001_2
10_{16} = 00010000_2
Vou trabalhar com essas palavras de 8 bits.

Passo 3

Explico o método do complemento de 2 para subtração (didático): para calcular \,A - B em binário com complemento de 2, fazemos
A - B = A + (\text{complemento de 2 de } B).
O complemento de 2 de uma palavra é obtido invertendo todos os bits (complemento de 1) e somando 1. Faço isso para B = 00010000_2.
Inversão de bits:
\overline{00010000_2} = 11101111_2.
Somando 1:
11101111_2 + 1 = 11110000_2.
Portanto o complemento de 2 de 00010000_2 é 11110000_2. Em hexadecimal, isso é F0_{16}.

Passo 4

Agora somo A = 10001001_2 com o complemento de B, que é 11110000_2. Faço a adição bit a bit (ripple carry), mostrando soma e propagação de carry:
Inicialmente c_0 = 0.
Bit 0 (LSB): 1 + 0 + c_0 = 1. Resultado s_0 = 1, carry c_1 = 0.
Bit 1: 0 + 0 + c_1 = 0. Resultado s_1 = 0, carry c_2 = 0.
Bit 2: 0 + 0 + c_2 = 0. Resultado s_2 = 0, carry c_3 = 0.
Bit 3: 1 + 0 + c_3 = 1. Resultado s_3 = 1, carry c_4 = 0.
Bit 4: 0 + 1 + c_4 = 1. Resultado s_4 = 1, carry c_5 = 0.
Bit 5: 0 + 1 + c_5 = 1. Resultado s_5 = 1, carry c_6 = 0.
Bit 6: 0 + 1 + c_6 = 1. Resultado s_6 = 1, carry c_7 = 0.
Bit 7 (MSB): 1 + 1 + c_7 = 0 com carry de saída c_8 = 1.
Montando os bits s_7\ldots s_0 obtemos a soma de 9 bits (incluindo o carry de saída):
1\;01111001_2.

Passo 5

Interpretação do carry de saída em complemento de 2 para subtração de números positivos: quando somamos A e o complemento de 2 de B, se houver carry de saída (aqui c_8 = 1), descartamos esse carry e o resultado de 8 bits é o valor correto positivo. Portanto descartando o carry obtém-se
01111001_2.
Agrupando em nibbles: 0111\;1001_2 que em hexadecimal é
7\;9 \Rightarrow 79_{16}.
Em decimal esse resultado corresponde a 121_{10}, conferindo que 137_{10}-16_{10}=121_{10} (valores decimais para checagem, onde 89_{16}=137_{10} e 10_{16}=16_{10}).

Passo 6

Quantos módulos somadores completos (full adders) são necessários? Implementando a soma de duas palavras de 8 bits com um somador ripple-carry, precisa-se de um somador completo por bit, ou seja, \,8 somadores completos. (Observação prática: pode-se implementar o LSB com meio-somador e os outros 7 bits com somadores completos, resultando em 7 somadores completos + 1 meio-somador; mas, perguntado em termos de módulos somadores completos ou subtratores completos, a resposta direta é 8.)

Resposta

79_{16} \bigl(01111001_2\bigr)
8 somadores completos

Exercícios relacionados