sexta-feira, 14 de março de 2014

Operações com Binários - Soma e Subtração

Operações com Binários

            Como o computador manipula os dados (números) através de uma representação binária, iremos mostrar agora a aritmética do sistema binário, a mesma usada pela ULA (Unidade Lógica e Aritmética) dos processadores.

Soma e Subtração

A tabuada da soma aritmética em:
0 + 0 = 0
0 + 1 = 1
1 + 0 = 1
1 + 1 = 0 (e “vai um” para o dígito de ordem superior)
1 + 1 + 1 = 1 (e “vai um” para o dígito de ordem superior)

Por exemplo:
Efetuar 0111002 + 0110102
Soma-se as posições da direita para esquerda, tal como uma soma decimal.

Solução:


A tabuada da subtração aritmética binária:
0 - 0 = 0
0 - 1 = 1 (“vem um do próximo”)
1 - 0 = 1
1 - 1 = 0

Obs.: Como é impossível tirar 1 de 0, o artifício é “pedir emprestado” 1 da casa de ordem superior, ou seja, na realidade o que se faz é subtrair 12 de 102 e encontramos 12 como resultado, devendo então subtrair 1 do dígito de ordem superior. Este algoritmo é exatamente o mesmo da subtração em decimal.
Por exemplo: 1111002 – 0110102 = ?

Obs.: Não esqueça, subtrai-se as colunas da direita para a esquerda, tal como uma subtração decimal.
Solução:


Subtração nos computadores

            Na eletrônica digital de dispositivos tais como computadores, circuitos simples custam menos e operam mais rápido do que circuitos mais complexos. Logo, números em complemento de dois são usados na aritmética, pois eles permitem o uso dos circuitos mais simples, baratos e rápidos.
            Uma característica do sistema de complemento de dois é que tanto os números com sinal quanto os números sem sinal podem ser somados pelo mesmo circuito. Por exemplo, suponha que você deseja somar os números sem sinal 13210 e 1410.


            O microprocessador tem um circuito na ULA (Unidade Lógica e Aritmética) que pode somar números binários sem sinal, quando aparece o padrão 100001002 em uma entrada e 000011102 na outra entrada, resulta 100100102 na saída.
            Surge a pergunta: como a ULA sabe que os padrões de bits nas entradas representam número sem sinal e não números em complemento de dois? E a resposta é: não sabe. A ULA sempre soma como se as entradas fossem números binários sem sinal. Sempre produzirá o resultado correto, mesmo se as entradas forem números em complemento de dois.


            Isto comprova um ponto muito importante. O somador na ULA sempre soma padrões de bits como se eles fossem números binários sem sinal. É a nossa interpretação destes padrões que decide se números com ou sem sinal estão sendo tratados. O bom do complemento de dois é que os padrões de bits podem ser interpretados de qualquer maneira. Isto nos permite trabalhar com números com e sem sinal sem requerer diferentes circuitos para cada padrão.
            A aritmética de complemento de dois também simplifica a ULA em outro ponto. Todo microprocessador precisa da instrução de subtração. Assim, a ULA deve ser capacitada a subtrair um número de outro. Entretanto, se isto necessitar de um circuito de subtração separado, a complexidade e o custo da ULA seriam aumentados. Felizmente, a aritmética de complemento de dois permite a ULA, realizar operações de subtração usando um circuito somador. Ou seja, a CPU usa o mesmo circuito tanto para soma como para subtração.

Subtração em complemento de dois

            Uma vez que o complemento de dois foi formado, a CPU pode realizar uma subtração indiretamente pela adição do complemento de dois do Subtraendo com Minuendo. Não esquecendo de ignorar o último transporte da adição.
            Como exemplo temos a subtração de 6910 (Minuendo) por 2610 (Subtraendo).

Jogue fora o transporte final:


Fica o desafio de descobrir porque o valor 7410 é o complemento de 10 do número 2610, a regra é análoga do complemento de 2 binária, ou seja, primeiro deve ser feito o complemento de 9 para cada número individualmente e depois deve ser somado o valor 1.
            Este método permite à CPU realizar subtração e adição com o mesmo circuito. O método que a CPU usa para realizar subtração é de pouca importância para o uso de microprocessadores.

Nenhum comentário:

Postar um comentário