Home > Tecnologia > Informática > Arquitectura de Computadores > Operações aritméticas em binário

Operações aritméticas em binário

Como já vimos atrás, os computadores estão limitados a dois estados: ON/OFF, Verdade/Falso, 1/0. Mas a explicação é simples! Um computador é essencialmente composto por circuitos lógicos que operam com operações boolianas como “E”, “OU”, “OU-Exclusivo” e negação. Como tal, as variáveis que temos são “Verdade” ou “Falso”, facilmente representadas por 1 ou 0, respectivamente. E, por isso, usa-se o sistema binário nos computadores.

Mas neste tópico iremos abordar as operações aritméticas em binário.

Soma em binário

Fazer contas com binários pode parecer estranho, mas na realidade não foge muito às regras “normais”. Vejamos, por exemplo, o caso da adição, comparando uma soma em decimal e uma soma em binário:

Considere-se a seguinte soma:

181 + 51

Se nos lembrarmos das contas da primária…

(1)
181
+51
232

Se puxarmos um pouco mais pela memória, lá vinham os passos 1 mais 1 são 2, 8 mais 5 são 13, 3 e vai 1, 1 mais 1 são 2… De notar o “e vai 1” pois iremos vê-lo novamente…

Considerem-se os valores equivalentes em binário e a soma (em binário):

1 0 1 1 0 1 0 1 (2) + 1 1 0 0 1 1 (2)

(1)(1)(1)(1)(1)
10110101
+110011
11101000

Vejamos com atenção, passo a passo, desde o bit LSB (menos significativo ou de menor peso, que é o mais à direita) ao bit MSB (mais significativo ou de maior peso, que é o que está mais à esquerda):

  • 1 mais 1 são “10”, 0 e vai 1

  • 1 mais 0 mais 1 são “10”, 0 e vai 1

  • 1 mais 1 mais 0 são “10”, 0 e vai 1

  • 1 mais 0 mais 0 é 1

  • 1 mais 1 são “10”, 0 e vai 1

  • 1 mais 1 mais 1 são “11”, 1 e vai 1

  • 1 mais 0 (mais 0) é 1

  • 1

Repare-se nos resultado “1 + 1 = 10” e “1 + 1 + 1 = 11”… Estranho? Lembre-se que estamos a trabalhar com números binários e que “10” em binário é 2 em decimal e “11” em binário é 3 em decimal…

Aos 1’s colocados entre parêntesis também se costuma dar o nome de transporte. Na realidade, ao nível do processador, há um bit chamado de “bit de transporte” (carrier) que fica a 1 sempre que se verifica o caso do “e vai 1”.

Subtracção em binário

Quanto à subtracção, as coisas mantém-se semelhantes e usa-se também o método do “empréstimo” ou “troca”. Vejamos em decimal:

172 – 85

(1)(1)
1 (0)7 (6)2
-85
087

Lembremo-nos que, no caso da subtracção, teremos “5 para 12 é 7 e empresta 1”, que depois subtraímos ao primeiro membro, daí seguir para “6 – 8 é 8 e empresta 1” e finalmente 1 menos 1, 0.

Vamos ver os mesmos valores, agora em binário:

1010 1100 – 101 0101

(1)(1)(1)(1)(1)
1 (0)01 (0)01 (0)1 (0)0 (1)0
-1010101
01010111

Vejamos passo-a-passo, obviamente da direita para a esquerda:

  • 0 – 1, empresta 110 – 1 = 1 (lembre-se que 10 (2) = 2 (10))

  • Subtrai o empréstimo de 1 ao 1º membro: 01, empresta também 1 e ficamos com 1 – 0 = 1

  • Subtrai o empréstimo de 1: 1 – 1 = 0, ficando 0 – 1, empresta 110 – 1 = 1

  • Subtrai mais um empréstimo de 1: 1 – 1 = 0, ficando 0 – 0 = 0

  • 0 – 1, empresta 110 – 1 = 1

  • Subtrai o empréstimo de 1: 1 – 1 = 0, ficando 0 – 0 = 0

  • 0 – 1, empresta 110 – 1 = 1

  • Subtrai o empréstimo de 1: 1 – 1 = 0, ficando 0 – 0 = 0

Ficamos com o número binário: 101 0111 que é 87 em decimal!



Multiplicação em binário

E multiplicar binários? Será complicar muito? Vejamos…

Seja o produto, em base 10 – decimal, de:

152 × 19

152
x19
1368
+152
2888

Vejamos agora em binário…

1001 1000 × 1 0011

10011000
x10011
10011000
10011000
00000000
00000000
+10011000
101101001000

 

No caso foi ainda mais simples por haver muitos zeros. Mas, como se pode ver, a forma de efectuar a operação é extremamente fácil. E, de facto:

1011 0100 1000 (2) = 2888 (10)

Se, porém, a soma das colunas tornar-se mais complicada por haver vários “uns”, podem-se ir fazendo somas parciais. Por exemplo:

101111
x1101
101111
+000000
0101111
+101111
11101011
+10111100
1001100011

Vejamos: 10 1111 (2) = 47 (10) ; 1101 (2) = 13 (10) ; 47 × 13 = 611 ; 10 0110 0011 (2) = 611 (10)

Divisão em binário

Já a divisão pode dar um pouco que pensar, mas não se afasta muito do conceito em decimal.

Vejamos, por exemplo, 89 ÷ 7

8'97
1 912
5

Lembremo-nos da primária e não usemos casas decimais:

  • 89 ÷ 7 : a casa das dezenas vale 8, faz-se 8 ÷ 7 = 1, resto de 1
  • Junta-se a casa das unidades, temos 19 ÷ 7 = 2, resto 5
  • O resultado final é então 12 e resto de 5

Vejamos estes valores em binário: 101 1001 (2) ÷ 111 (2) e usemos subtracções parciais para ajudarem nos cálculos:

1 0 1 1'0 0 11 1 1
- 1 1 11 1 0 0
0 1 0 0 1
  - 1 1 1
  0 0 0 1 0
    - 0 0 0
      0 1 0 1
      - 0 0 0
        1 0 1

Passo-a-passo, temos:

  • Precisamos de começar com 1011 para caber em 111
  • Multiplicando por 1 no quociente, temos 111 e que se subtrai a 1011, ficando 100
  • Baixa-se o 0 seguinte e ficamos com 1000
  • Voltamos a ter mais 1 no quociente: 1000 – 111 = 001
  • Baixa-se o outro 0 e ficamos com 10.
  • 10 não cabe em 111, adicionamos agora um 0 no quociente
  • Baixa-se, por fim, o 1 e ficamos com 101
  • 101 também não cabe em 111 e temos mais um 0 no quociente
  • Não tendo mais números, conclui-se que a divisão dá 1100 e resto de 101.

E, confirmando: 1100 (2) = 12 (10) e 101 (2) = 5 (10)

Vejamos então, para resumir e concluir, a tabuada em binário:

Operações aritméticas em binário



Repare-se que:

  • Na adição, o 0 é – como em base 10 – elemento neutro
  • Em 1 + 1 = 10, lembre-se que o 1 é transporte para o “vai 1
  • Na subtracção em 0 – 1 temos a questão do empréstimo do 1
  • Na multiplicação o 0 é – como em base 10 – elemento “absorvente”
  • Na divisão, não é possível dividir por 0 (NA – não se aplica)

Próximo artigo 

Este artigo foi escrito com a antiga grafia.

About Carlos Santos

Frequência em mestrado de Engenharia Electrotécnica e de Computadores. Programador freelancer: Websites, Aplicações Web (JAVA e PHP), J2SE/J2EE, C/C++ e Android. Explicador e formador em informática, matemática e electrotecnia. Formação presencial ou remota através de Skype e Team Viewer. Interesses: Música, áudio, vídeo, ciência, astronomia e mitologia.

Leave a Reply

Your email address will not be published and it is optional.