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):
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.)