Publicado por: hugolt | fevereiro 24, 2008

Um pouco sobre Binário

Binário

Com esse simples artigo vou mostrar como é feita a conversão e algumas operações bem úteis com o sistema binário e não será abordado nenhuma operação ou conversão com números com sinal. Esse sistema numérico é famosíssimo na informática e é um pouco obrigatório entendê-lo (principalmente se você quer “escovar bits” algum dia), pois as “máquinas” nas quais trabalhamos usam este sistema numérico para realizar todas as operações.
Primeiramente o nome do sistema númerico já ajuda bastante a entender como ele pode ser.
Binário significa que o sistema tem apenas 2 algarismos (1 e 0); decimal tem 10 algarismos, hexadecimal tem hexa(6) + decimal(10), total de 16, porém, como só conhecemos 10 algarismos, letras são usadas para completar o sistema, de A a F; octal tem oito algarismos…

* Na informática é comum ouvir falar e trabalhar com bits e bytes. Um bit é um dígito binário (1 ou 0) e um byte é um conjunto de oito bits. Existe também o termo nibble, cada nibble representa 4 bits.

Uma observação no sistema decimal

Todos nós estamos acostumados a fazer cálculos usando o sistema decimal. Somas, subtrações, multiplicações e divisões. A maneira como olhamos para os números é tão normal que parece ser o único sistema numérico.
Se virmos o número 123, por exemplo, raramente pensaríamos nele como:
1×102 + 2×101 + 3×100 (1 está na casa da centena, 2 na dezena e 3 como unidade).

* Sempre que for citado um número com outro subscrito, ao lado, será o número em determinado sistema numérico.
Exemplo: 12310 significa 123 no sistema decimal

Conversão decimal para binário

CONVERSÃO ENTRE INTEIROS:
Qualquer número a ser convertido, independente do número de algarismos, segue esse padrão. Peguemos o número 12310 como exemplo para conversão para binário. O que precisa ser feito é divisões inteiras sucessivas até chegar no quociente zero e anotar os restos das divisões.

    123 |__2__
      1  61 |__2__
          1    30 |__2__
               0    15 |__2__
                     1    7 |__2__
                          1   3 |__2__
                              1   1 |__2__
                                   1  0

Agora organizando de baixo para cima os restos, temos 11110112.

* Observação: tratando-se de divisão por 2 sempre que o dividendo for ímpar o resto será 1, se for par será 0.

No sistema binário, assim como no decimal, zeros à esquerda antes de vírgula são desconsiderados e muitas vezes são úteis para preencher lacunas. Por exemplo, o número 123 tem 7 bits e se quisermos representá-lo como se fosse 1 byte, poderíamos escrever 0111 10112 sem problemas.

CONVERSÃO ENTRE DECIMAIS FRACIONÁRIOS:
As conversões entre decimais fracionários são feitas pegando somente a parte fracionária e multiplicando por dois até que a parte fracionária seja zero, porém há casos em que nunca se chega a zero e é comum adotar uma precisão, caso contrário a divisão nunca terminaria. Depois de feito este passo basta pegar as partes inteiras dos produtos e organizar na ordem em que foram encontradas, assim teremos a parte fracionária em binário.

Exemplo:2.2510
210 = 102
0.25     0.50
x 2      x 2
-----------     -------------
0.50     1.00

Assim temos a parte decimal representada por 012, não podendo eliminar os zeros à esquerda, pois estão depois da vírgula.
2.2510 = 10.012

Convertendo de binário pra decimal: 1x2^1 + 0x2^0 + 0x2^-1 + 1x2^-2 = 2+0+0+0.5 = 2.5

Um exemplo de nunca resultar em 0 a parte fracionária é o número 67.57510:

6710 = 10000112

0.575     0.150     0.300    0.600     0.200     0.400    0.800     0.600
x 2       x 2       x 2      x 2        x 2       x 2      x 2       x 2
-------------     -------------     -------------    -------------     -------------     -------------    -------------     -------------
1.150     0.300     0.600    1.200     0.400     0.800    1.600     1.200

Note que começa a repetir as divisões, é uma divisão sem fim, por isso temos que aproximar.
Nesse caso, 67.57510 = 1000011.100100112

Soma no sistema binário

Para entender como funciona a soma no sistema binário é necessário saber os seguintes resultados:

Tabelinha:

    0 + 0 = 0
    1 + 0 = 1
    0 + 1 = 1
    1 + 1 = 0 * (e vai um, do inglês carry)
* Este “vai um” significa que o resultado da soma de 1+1 é 0 e soma-se 1 no próximo valor à esquerda.

Entendendo isto fica muito fácil e já podemos aplicar o nosso conhecimento, não há mistérios.

  * *
    1 1 0
  + 0 1 1
    -----
  1 0 0 1

Explicação rápida: Como no sistema decimal, começamos a somar da esquerda pra direita.

O valor do “vai um” será representado por um asterisco e vale sempre 1.
0 + 1 = 1
1 + 1 = 0 e vai um,
* + 1 = 0 e vai um,
* + 0 = 1 (zeros à esquerda podem ser adicionados sem alterar valores)

Subtração no sistema binário

Entendendo o que foi citado acima, neste texto, não há dificuldades em subtrair binários, a única diferença na tabelinha de resultados é que 0 – 1 = 1 e vai um.

Tabelinha:
   0 - 0 = 0
   1 - 0 = 1
   0 - 1 = 1 * (e vai um pra ser subtraído do próximo digito à esquerda)
   1 - 1 = 0

Exemplo:

       * * *
       1 0 1 0
     - 0 1 1 1
       -------
       0 0 1 1
O valor do “vai um” será representado por um asterisco e vale sempre 1.

Explicação rápida:

0 - 1 = 1 e vai um
1 - * = 0 e 0 - 1 = 1 e vai um
0 - * = 1 e vai um e 1 - 1 = 0
1 - * = 0

Multiplicação no sistema binário

Para aprender a multiplicação é necessário o conhecimento da soma com binários e saber que:

Tabelinha:
   0 * 0 = 0
   1 * 0 = 0
   0 * 1 = 0
   1 * 1 = 1

Então a multiplicação só será 1 quando ambos termos forem 1.

Exemplo:

        1 1 0 0
      x 0 1 0 1
        -------
        1 1 0 0
      0 0 0 0 +
    1 1 0 0 +
  0 0 0 0 +
  -------------
  0 1 1 1 1 0 0
* Observação: Se o bit do multiplicador for 1, repete o multiplicando. Se for 0, o resultado será imediatamente 0

Divisão no sistema binário

Conhecendo a subtração no sistema binário e sabendo dividir inteiros no sistema decimal já é mais do que suficiente para realizar divisões. Caso queira tirar a prova real, a multiplicação entre binários é necessária.
Na divisão não há como criar uma tabelinha, pois a cara hora varia o comprimento do dividendo e do divisor, por isso a necessidade de conhecimento de divisão no sistema decimal.

Exemplificando:

    1 0 1 0 1 |__1 1 1___
  - 0 0 0       0 1 1
   ------
    1 0 1       * * *
     1 0 1 0
   -   1 1 1
   --------
     0 0 1 1      0 0 1 1 1
   -     1 1 1
    ----------
     0 0 0 0 0

Observações

#1 – O bit mais à direita de um número binário é conhecido como LSB (Least Significant Bit) e o mais à esquerda como MSB (Most significant Bit).
#2 – Para multiplicar um número binário por dois basta deslocar uma casa pra esquerda.
Por exemplo: 11 deslocado pra esquerda é 110.
#3 – Para dividir um número binário por dois basta deslocar uma casa pra direita.
Por exemplo: 1010 deslocado pra direita é 101.
#4 – Todo número decimal par termina com 0 em binário e todo ímpar termina com 1.
#5 – Caso exista mais de uma vez o uso de “vai um”, como em 1+1+1+1, é acumulativo para o próximo dígito.
Por exemplo: 1+1+1+1 = 100 (observação de um comentário)
#6 – Tratando-se de números com sinal há maneiras diferentes de representa-los e o artigo não aborda essas maneiras. (Entre elas estão complementos para 2).
Algumas consultas à Wikipedia foram feitas, a página de binário deles está aqui.


Responses

  1. Achei as explicacoes fracas. Nao foram tratados casos de excecao. E se, na multiplicacao, a soma de colunas for 1+1+1+1 ? E se o resultado da subtracao for um numero negativo?

  2. gostaria de saber mais um pouco sobre a multiplicação . como è feita.

    grato

    Jose

  3. Me ajudou bastante. Fico muito grato

  4. cara, dá pra explicar melhor como se faz essa divisão de binários…

  5. eu acho que teria que ter mais coisas sobre o sistema binário para tirarmos alguma curiosidade

  6. não sei

  7. não sei como explicar

  8. não sei como fazer

  9. Se no seguinte binário 0100 o LSB é o mais a esquerda, então seu correspondente decimal é 2. Agora, se o LSB é o mais a direita então o decimal é 8.

    LSB é o bit menos significativo. Ao converter o binário em decimal é importante saber disso.

    No sistema decimal nós estamos acostumados com o LSB mais à esquerda, seria a unidade. O segundo mais a esquerda é a dezena e é o algarismo mais significativo que o mais a esquerda da palavra. O terceiro é a casa da centena, e assim por diante.

    Em decimal, 12 é doze com o LSB mais a esquerda e é vite e um com o LSB mais a direita.


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

Categorias

%d blogueiros gostam disto: