Fundamentos da Informática – Operações Aritméticas em Binário

No artigo anterior falei das bases de numeração. Neste artigo falarei sobre operações aritméticas em binário.

É relativamente simples: 1 + 1 = 10!

Bom… acho que uma explicação mais detalhada é melhor😛

As operações de soma a subtração em binário são muito parecidas com as operações de soma e subtração convencionais: Soma-se (ou subtrai-se) os 2 números, começando pela direita, se “sobra” um numero, coloca ele no próximo algorismo (ou, na subtração, se pede “emprestado”):

Fazendo somas decimais passo a passo:

49 + 28.

Soma-se o 9 com o 8. O resultado é 17. Como 17 é maior que 10, “guardamos” o que sobra para  soma dos próximos algorismos.

Em seguida, soma-se o 4 e o 2. O resultado é 6. Como na soma dos algorismos anterior havia “sobrado” um numero, adiciona-se este numero ao 6, ou seja, 6+1=7. O resultado é 77.

A subtração é mesma coisa:

23 – 15.

Calcula-se 3 – 5. Como 3 é menor que 5, ele “pede emprestado” um numero para o 2. Então calcula-se 13-5, que é 8.

Na subtração do segundo algorismo, o 2, que “emprestou” para o 3, passou a ser 1. Então, 1 – 1 = 0. O resultado da conta é 8.

Não fiz desenho pois todo mundo já deve ter aprendido isto na escola!

Em binário, há somente 2 dígitos: 0 e 1. Porém a soma funciona da mesma forma que na álgebra normal. Devemos lembrar sempre que:

0+0 = 0
0+1 = 1
1+0 = 1
1+1 = 10.

Repare no ultimo calculo: 1+1 = 10. O “1” do 10 é justamente o que sobra do calculo de 1+1. Este “1” que sobrou é chamado de “Carry”.

Um ponto a ser observado é que em binário é comum ocorrer um verdadeiro “Efeito dominó” de sobras durante a soma. O que quero dizer com efeito “dominó”: Em decimal, a soma  9999 +1, como 9+1 = 10, na soma do primeiro algorismo vai sobrar um valor, que deve ser acrescentado ao segundo algorismo. Porém, esta soma também causará uma sobra, que será adicionada ao terceiro… que também causará a sobra que deverá ser adicionada ao quarto algorismo, que também sobrará e, finalmente, um quinto algorismo deverá ser adicionado, gerando a resposta 10000. Como em binário só temos 2 dígitos, este “efeito dominó” ocorre muito frequentemente. Só coloquei este alerta pois já vi casos de pessoas que, realizando exercícios, ao somar em binário acharam que o calculo estava errado por causa do efeito dominó.

continuando:

O procedimento da soma é igual na soma decimal, porém, com só 2 valores possíveis: 0 e 1.

exemplo:
10101001 + 00110011 = 11011100

somabinaria

Ta ali a soma. Os numeros em vermelhos são as “sobras” da soma dos algarismos anteriores. Exatamente como a soma convencional, porém usando só 0 e 1!

Se no ultimo algorismo também “sobrasse” 1, era só colocar mais um algorismo no final, exemplo:

11111111 + 00000001 = 100000000
Nós, humanos, podemos ir adicionando numerosinhos enquanto houver espaço no papel. Computadores não tem este luxo: Se o computador que realizar a soma que fiz de de 11111111 + 1 não conseguir trabalhar com mais de 8 bits, o resultado seria 00000000 e um erro de overflow!. (Overflow é quando o resultado de um calculo é muito grande para a máquina). Se a soma fosse 11111111 + 00000010, o resultado seria 00000001 com erro de overflow.  Efetivamente, 255 + 2 = 1 com aviso de erro de overflow.

É importante lembrar que, se estamos trabalhando com números de 8 bits, serão sempre 8 bits a resposta. Se estivermos trabalahndo com numeros de 16bits, a resposta será sempre 16bits! Se o resultado ultrapassar o numero de bits, então ocorre um overflow.

O maior numero possivel de representar dado um determinado numero de bits binários é dada pela seguinte equação:

(2^N)-1. Aonde N é o numero de bits. Para 8 bits, o valor é( 2^8)-1 ou seja: 256-1, ou 255. Valores entre 0 e 255 são válidos.

Não vou falar de subtração agora, pois preciso falar de números negativos e um fato sobre computadores.

Nós, humanos, sabemos diferenciar um numero positivo de um numero negativo porque, no numero negativo, existe um sinal de “menos”(-) antes do numero. Lembra quando eu disse que computadores só conhecem 0 e 1? então… eles não conhecem numeros com sinais de menos…

Se vocês se lembram da escola, 5 + (-3) é o mesmo que 5 – 3, e, obviamente, 5 -3 é o mesmo que 5 + (-3). Ou seja: A subtração de um A por um numero B é o mesmo que somar A com o B negativo. Esta propriedade matemática também se aplica em binário, e por isto, computadores não sabem subtrair! Eles só somam. Para subtrair, A de B, eles transformam B em um numero negativo,e em seguida, somam. Mas, como computadores sabem quando um numero é negativo?

Quando a infomática surgiu, um número negativo era o mesmo numero positivo porém invertido: O numero dez, em binário, é 00001010. O dez negativo é 11110101. O sistema diferencia um numero positivo de um negativo pelo “1” no bit mais significaivo (o mais à esquerda). Este método, chamado de “Complemento de um”, funciona bem, o problema é que existe uma ambiguidade: E o numero zero? 00000000 e 11111111 represemtam 0.

E isto é um GRANDE problema, pois não existe “Zero negativo”.

Para solucionar isto, foi criado o “Complemento de dois”, que funciona assim:

Sempre que ocorre uma conversão de positivo para negativo ou vice versa, além da inversão de digitos, ocorre a soma de 1 ao valor resultante.No caso, o numero zero ficara 11111111 + 1 = 00000000.

Então, se dez positivo é 00001010, dez negativo é 11110101 + 1 = 11110110.

Para transformar dez negativo em dez positivo, basta repetir o processo: 11110110 -> 00001001 + 1 = 00001010.

Vamos testar: dez positivos somados com dez negativos, deve ser zero (10 + (-10)) = 10-10 = 0.

00001010 + 11110110 = 100000000. O 1 que sobrou é descartado pelo sistema. Isso funciona sempre. O sistema faz testes para detectar Overflows durante a soma. O teste é simples: Se os 2 ultimos bits de “vai um” (Carry) forem 1 e 1 ou 0 e 0, a troca de sinal ocorreu de forma válida. Se for 0 e 1 ou 1 e 0, então ocorreu um overflow.

Quando se lida com complemento de 2, o intervalo numérico representado dado um numero de bits é o seguinte:

De -2^(N-1) até (2^(N-1))-1. Ou seja: Para 8 bits, o intervalo vai de -2^(8-1) até (2^(8-1))-1, que é o mesmo que -2^7 até (2^7)-1, que é o mesmo que -128 até 127.

Na wikipedia, em ingles, tem uma explicação completa e detalhada sobre o complemento de 2.

Como foi possivel perceber, com 1 byte é possivel representar números entre 0 e 255, ou entre -128 e 127.

Como o sistema sabe quando um byte deve ser considerado como sendo entre 0 e 255 ou -128 e 127? Simples: Ele não sabe. O programa em execução é o responsável por definir se o byte é Unsigned (entre 0 e 255) ou Signed (entre -128 e 127).

Espero que este texto não tenha ficado muito confuso – foi o melhor que eu pude fazer para este tópico. O próximo artigo será mais legal: Falará sobre operações booleanas : And, Or, Xor, Not

Uma resposta para Fundamentos da Informática – Operações Aritméticas em Binário

  1. Betina (TINA) disse:

    Eu adorei a explicação!!!!!!
    Eu comecei essa semana o técnico de informática no CEFET e era isso que eu precisava.
    PARABÈNS para o autor do site e da explicação!!!!!
    bjos

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: