Menu

Soma e subtração com números binários

Os números na base 2, seguem o mesmo principio das operações na base 10, mas levando em consideração que números binários utilizam apenas dois dígitos: UM e o ZERO.

ADIÇÃO

0 + 0 = 0
1 + 0 = 1
1 + 1 = 10 (fica zero e vai um)
0 + 1 = 1

Na soma não há muito mistério, vejamos um exemplo:

(147) 1001 0011  +
(105) 0110 1001
(252) 1111 1100

A única cilada é quando aparece 1 + 1 + 1 ... e ai? 
Solução simples: fica 1 e vai 1. Exemplo:

(147) 1001 0011  +
(003) 0000 0011
(150) 1001 0110

SUBTRAÇÃO

0 - 0 = 0
1 - 0 = 1
1 - 1 = 0
0 - 1 = ? (pede emprestado na direita fica 10 - 1 = 1)

Exemplo: 

(147) 1001 0011  -
(003) 0000 0011
(144) 1001 0000

Exemplo de 0 - 1:

(147) 1001 0011   -
(010) 0000 1010
(137) 1000 1001

Problema 1: Quando não encontramos números para pedir emprestado.


(001) 0000 0001  -
(017) 0001 0001
(???) 1111 0000

Quando esta situação acontece você cria um numero imaginário a direita e pede emprestado pra ele. Consequentemente, todos os outros zeros ganharam 1, e etc. Pelo menos isso acontece em operações com números de bits fixos. Mas por que a resposta não deu 016 em binário como era de se esperar? Porque para encontrar 016 precisamos subtrair um do número encontrado (1110 1111) e depois inverter seus bits (0001 0000). Pronto. (Processo contrário do complemento a dois)

Alternativas à subtração

Ao invés de subtrair, podemos fazer a subtração com complemento a dois, que nada mais é do que somar um número positivo com um número negativo...

Complemento a dois

Números binários possuem uma marcação simples para representações positivas ou negativas. Quando temos o zero na frente, ele é positivo. Quando temos o 1 é negativo. Mas isso gera um problema, porque representaríamos o numero zero DUAS vezes (o +0 e o -0). Isso não existe!! O que é feito então? Há um "truque" especial... o complemento a dois
Como funciona? Invertemos o numero (se for 1 coloca zero e se for zero coloca 1) e depois somamos UM. Pronto. Teremos um numero negativo em binário.

Exemplo: 0001
Inverte:    1110
Soma 1:   1110 + 1 = 1111

Agora que já sabemos fazer o complemento a dois, vamos testar o outro método de subtração...
Pegando caso simples de subtração:

(07) 0000 0111 -
(06) 0000 0110
(01) 0000 0001

Para somarmos com o numero invertido realizamos o complemento a dois do numero 0000 0110 (que corresponde ao n˚ 06 em decimal):

Numero: 0000 0110 (+6)
Inverso:  1111 1001
adicionando 1 :
1111 1001  +
0000 0001
1111 1010 (-6)

Agora realizamos a adição:

(+07) 0000 0111 +
(-06)  1111 1010
(+01) 0000 0001


Simples, mas só um pouco prático! rs

9 comentários: