[Cálculo Numérico] Aula 8: subtração de binários
Autor: Henrique S. Ribeiro | Publicado: 2012-08-25T19:21:00-07:00


Subtração de binários
Como os sinais digitais não reconhecem (-) como números negativos o processo de subtração entre A e B deve ser dado por A + (-B) onde -B representa o oposto de B.
Esta determinação de oposto de um binário pode ocorrer de três formas:
1. sinal-magnitude: representado em sinais digitais de 8 bits onde o primeiro&nbsp;bit é o indicativo da magnitude.
Exemplo: (0)0001001 = +9, enquanto (1)0001001 = -9.
Ou seja, todo binário que possui N-1 = 0 é positivo e N-1 = 1 é negativo. Existe assim 2^8 possibilidades de combinação. 2^8 = 256 dígitos, sendo 128 positivos e 128 negativos, mas, observe que 00000000 = +0 e 10000000 = -0 assumem o mesmo valor. Logo:
127 combinações positivas, 127 combinações negativas, e 0. Um total de 255 combinações.

2. complemento de um:&nbsp;troca-se os 0 por 1 e os 1 por zero.
+9 = 00001001
-9 = 11110110
Novamente, 00000000 = +0 e 11111111 = -0. Por isso temos&nbsp;255 valores&nbsp;de -127 a +127.

3. complemento de dois: realiza-se o complemento de um e soma-se mais um:
+9 = 00001001
-9 = 11110110 (comp. de um de 9) + 1 = 11110111
No caso de 0:
+0 = 00000000
-0 = 11111111 (comp. de um de 0) + 1 = 100000000
Como estamos falando de 8 bits, ignoramos o nono caracter à esquerda. Ou seja: -0 = 00000000. Sendo assim, esse sistema é o mais favorável, pois permite de&nbsp;-128 a +127.

Exercícios:
1. Resolva em binário:
a) (antes dele alterar) 5 - 2
5 + (-2)
5 é muito fácil, né:
4 - 2 - 1
1 - 0 - 1
Logo, 5 = 00000101
Já o -2 é um pouquinho mais complicado, mas nada demais. Lembrando que usaremos complemento de dois:
2 = 00000010
Comp.1 de 2 é 1111101. +1 = 11111110. Logo a operação fica:
00000101 +
11111110
Primeiro algarismo, 1. Segundo algarismo, 1. Terceiro algarismo, 10, fica 0 e vai 1. Aí vai dando 10 (fica 0 e vai 1) até estourar a oitava casa, o que dá: 00000011 (3 no sistema decimal). Mas note que estamos usando um número muito grande, então vamos usar do seguinte aconchego: só vamos até a última casa do número maior, passou disso começaremos a ignorar porque sabemos que vai estourar a oitava casa.
Perceba na b:

b) 3 - 2
3 + (-2)
Não precisamos fazer conta pra saber que 3 = 11.
2 = 10. Com complemento de 1, fica 01. Acrescentando 1, 10.
Logo a operação fica:
11 +
10
1 + 0, fica 1.
1 + 1, fica 0 e vai 1. Mas a última casa é essa, então ignoramos tudo depois dela.
Logo, 3 - 2 dá&nbsp;01 que, bem, é igual a 1 em decimal.

a) (depois dele alterar) 5 - 1
5 + (-1)
Já sabemos que 5 = 101.
1 é 001. Complemento de 1 fica 110, somando 1 fica 111.
Logo, a conta será:
101 +
111
1+1 dá 10, fica 0 e sobe 1.
0+1+1 dá 10, fica 0 e sobe 1.
1+1+1 dá 11, fica 1 e sobe 1, que ignoramos.
Logo, 5 - 1 fica&nbsp;100, que é&nbsp;4.

c) 12 - 6
12 + (-6)

Pra 12:
8 - 4 - 2 - 1
1 - 1 - 0 - 0

Pra 6:
8 - 4 - 2 - 1
0 - 1 - 1 - 0
Complemento de 1: 1001. Soma-se 1: 1010.
Logo a operação fica:

1100 +
1010
0+0 = 0.
0+1 = 1.
1+0 = 1.
1+1 = 10, fica 0 e sobe 1, que ignoramos.
Logo, essa conta dá o resultado&nbsp;110, que em decimal fica (obviamente) 6.

d) 7 - 5
7 + (-5)

Pra 7:
4 - 2 - 1
1 - 1 - 1

Pra 5:
4 - 2 - 1
1 - 0 - 1
Complemento de 1: 010. Soma-se 1: 011.
Logo a operação fica:

111 +
011
1+1 = 10, fica 0 e sobe 1.
1+1+1 = 11, fica 1 e sobe 1.
1+1 = 10, fica 0 e sobe 1, que ignoramos.
Logo, essa conta dá o resultado de&nbsp;10, que em decimal fica 2.

E é basicamente isso. Mais uma vez lembro que não sei ao certo qual estrutura de post uso pra essa matéria de binários aqui, porque não sei se está claro dessa forma, ainda mais porque não consigo determinar a base sem usar o LaTeX só que me parece&nbsp;muito inconveniente usar o LaTeX nessa situação.
É vocês que me contatam e decidem. No mais, boa noite.