sábado, 9 de maio de 2009

Números binários

Em um sistema de representação binário (base 2) os números decimais (base 10) são representados somente pelos algarismos 0 e 1. Como por exemplo o número decimal 91 no sistema binário fica 01011011. Sabe-se que uma das técnicas mais famosas para conversão de decimal para binário é a divisão repetidamente do número decimal por 2 até que se obtenha o quociente 1 , o conjunto dos algarismos iniciado pelo último quociente e voltando por todos os restos até o primeiro forma a representação do número binário, por exemplo o cálculo para conversão de 234:

234 : 2
0 117 : 2
1 58 : 2
0 29 : 2
1 14 : 2
0 7 : 2
1 3 : 2
1 1 <-

Então 234 no sistema binário fica 11101010.

Já para a conversão de binário para decimal utiliza-se a seguinte fórmula:

N = d x b^n-1 + d x b^n-2 + ... + d x b^1 + d x b^0

Sendo d cada algarismo do número, n o número total de algarismos tendo n-1 como a posição do algarismo e b indica a base do número.

Convertendo 01011011 para decimal usando a fórmula fica (pode-se ignorar o zero mais à esquerda):

N = 1 x 2^6 + 0 x 2^5 + 1 x 2^4 + 1 x 2^3 + 0 x 2^2 + 1 x 2^1 + 1 x 2^0
N = 1 x 64 + 0 x 32 + 1 x 16 + 1 x 8 + 0 x 4 + 1 x 2 + 1 x 1
N = 64 + 0 + 16 + 8 + 0 + 2 + 1
N = 91


Entretanto o sistema de representação binário tem uma lógica de evolução dos números que apenas visualmente é possível mentalizar o resultado da conversão, inclusive no sentido oposto, decimal para binário e binário para decimal. Vamos então primeiro para a evolução dos números. Tomando para a explanação o conjunto de números decimais de 0 a 255, em binário vai de 00000000 a 11111111, o início da seqüencia é:

  0   00000000
1 00000001
2 00000010
3 00000011
4 00000100
5 00000101
6 00000110
7 00000111
8 00001000
9 00001001
10 00001010
...


Pela seqüencia percebe-se que os algarismos 1 vão aparecendo na representação da direita para a esquerda. A posição do primeiro algarismo 1 à esquerda só é modificada para a próxima casa à esquerda quando todas as outras casas à direita tornam-se 1 e com este movimento todas as casas à direita retornam para o algarismo 0, iniciando novamente uma nova evolução para completar as casas da direita com 1 e assim mover mais uma vez o algarismo 1 da esquerda para mais uma casa à esquerda.

É aí que temos um fato interessante. Todos conhecem a famosa seqüencia das potências de 2 que é 1, 2, 4, 8, 16, 32, 64, 128 etc. Acontece que para cada um desses números decimais quando representados no sistema binário apenas um algarismo 1 é contido na representação. Por exemplo:

  1   00000001
2 00000010
4 00000100
8 00001000
16 00010000
32 00100000
64 01000000
128 10000000


Então dado um número representado no sistema binário, se observarmos o algarismo 1 mais à esquerda em uma determinada casa significa que o número decimal será pelo menos igual ou maior, caso tenha outro algarismo 1 à direita, a potência representada nesta determinada casa. Exemplo, em 00100110 o algarismo 1 mais à esquerda está na casa da potência 32, como tem outros algarismos 1 à direita este número é maior que 32, e obviamente menor que 64. Sendo assim onde tiver o algarismo 1 o valor de sua respectiva potência de 2 será acrescentado ao número decimal.

Agora ficou fácil. Para encontrar o número exato basta somar as potências de 2 onde o algarismo é 1. Deste modo 00100110 tem o algarismo 1 nas casas das potências 32, 4 e 2, que somando resulta 38.

Voltando à conversão de decimal para binário (base 10 para base 2) o procedimento também é simples e inverso. Dado um número decimal, inicialmente encontra-se a primeira potência de 2 com o valor menor. Partindo deste valor vai-se somando as próximas potências menores, ignorando as que façam o resultado da soma ultrapassar, até que o resultado seja igual ao número decimal. A representação no sistema binário será colocando o algarismo 1 nas casas onde foram usadas as potências para a soma. Exemplificando, o número decimal 91 utilizará a soma das potências 64, 16, 8, 2 e 1 para igualar o seu valor, assim sua conversão para o número binário será 01011011.

Referências:

GUNTZEL, J. L. & NASCIMENTO, F. A. Introdução aos Sistemas Digitais, 2001.
MONTEIRO, M. A. Introdução à Organização de Computadores, 4ª Edição, LTC, 2005.
PATTERSON, D. A. & HENNESSY, J. L. Organização e Projeto de Computadores: A Interface Hardware/Software, 3ª Edição, Ed. Campus, 2005.
STALLINGS, W. Arquitetura e Organização de Computadores, 5ª Edição, Prentice-Hall, 2002.
TANENBAUM, A. S. Organização Estruturada de Computadores, 4ª Edição, LTC, 1999.
WEBER, R. F. Fundamentos da Arquitetura de Computadores. 2ª Edição, UFRGS - Sagra-Luzzato, 2001.

Nenhum comentário:

Postar um comentário