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
(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
Muito bom! Parabéns!
ResponderExcluirObrigada! :)
ExcluirBem explicado
ResponderExcluirPor favor, poderias efetuar a seguinte conta, em binário? 735-3256. Agradeço desde já !
ResponderExcluirSou obrigada a dizer que só olhando essas anotações pude entender esse Complemento de 2. Obrigada por compartilhar.
ResponderExcluirExcelente material!
ResponderExcluirAgradeço!
ExcluirObrigado, foi muito útil
ResponderExcluirDisponha!
Excluir