sexta-feira, 8 de abril de 2011

Programação em C para PIC - II


    Olá amigo, nesta segunda postagem da série sobre os fundamentos da programação em C para PIC vamos ver como se faz a conversão entre as bases numéricas e os primeiros conceitos de lógica digital.

CONVERSÃO DE BASES NUMÉRICAS

    Agora que já aprendemos como funcionam as bases numéricas precisamos descobrir como podemos converter os valores entre as bases numéricas, pois um conjunto de zeros e uns pode dizer muita coisa a uma máquina, mas não nos é muito significativo.


CONVERSÃO BINÁRIO - DECIMAL 

    A conversão de um número que está na base binária para a base decimal é muito simples, basta apenas decompô-lo em potências de base 2. Observe o exemplo:

1011 0110b =
1.2^7 + 0.2^6 + 1.2^5 + 1.2^4 + 0.2^3 + 1.2^2 +1.2^1 + 0.2^0 =  (perceba que 2^2 = 2²)
2^7 + 2^5 +2^4 + 2^2 + 2^1=
128 + 32 + 16 + 4 + 2 =
182d

   Note que a posição do algarismo binário indica o expoente que será atribuído ao 2.




CONVERSÃO DECIMAL - BINÁRIO

    A conversão de um número em decimal para um número binário também é muito simples, basta realizar sucessivas divisões por 2 tomando o valor do resto e tornando a dividir o quociente.


    No exemplo acima tomamos os valores dos restos das divisões, começando da última para a primeira e formamos o número 182d em binário ou seja 1011 0110b.



CONVERSÃO HEXADECIMAL - DECIMAL

     Para converter um número hexadecimal para a base decimal usamos o mesmo artifício usado acima, ou seja multiplicamos cada digito do número hexadecimal pelo número 16 elevado ao valor de sua posição e ao final somamos os resultados parciais, ou seja:

    Lembre-se que os valores das letras no hexadecimal são:

A = 10;
B = 11;
C = 12;
D = 13;
E = 14;
F = 15;



CONVERSÃO DECIMAL - HEXADECIMAL

    Para transformar um número decimal em hexadecimal podemos usar o mesmo procedimento descrito anteriormente para a base binária, usando agora o divisor 16. Exemplo:




CONVERSÃO HEXADECIMAL - BINÁRIO (BINÁRIO - HEXADECIMAL)

    A conversão entre as bases hexadecimal e binária é extremamente simples e nem requer cálculos. A base hexadecimal é uma forma de facilitar a escrita de números binários, pois cada conjunto de quatro alagrismos binários equivalem a um algarismo hexadecimal (2^4 = 16), assim:

    Para a substituição dos algarismos, basta observar a tabela de conversão abaixo:




REPRESENTAÇÃO DAS BASES NUMÉRICAS

    Quando utilizamos várias bases numéricas ao mesmo tempo na hora da programação e escrevemos para o nosso programa contar até 100, não sabemos se ele irá contar até 3 (se 100 estiver na base binária), se até 100 (decimal), ou até 256 (na base hexadecimal). Desta forma devemos sempre indicar qual a base do número que estamos utilizando.
    Para representar um número hexadecimal geralmente utilizamos $ ou 0x ou h, e para representar um número binário % ou 0b ou B:

Hexadecimal -> $16FA ou 0x16FA ou 16FAh
Binário -------->  %1001 ou 0b1001 ou 1001B

   Se um número não tiver nenhum sufixo ou prefixo subentende-se que é número decimal.

BIT E BYTE

    Até agora o assunto foi puramente matemático. Mas agora vou introduzir as noções de bit e byte, que são os fundamentos da eletrônica digital.
    O bit é o algarismo binário, ou seja, o digito binário.

BIT = Binary digIT

    Supondo o número 1001 0110b os bits são cada um dos algarismos deste número, assim:

    O byte é um agrumento de 8 bits. Como os bits correspondem aos algarismos o byte corresponde aos números. Desta forma todas as operações matemáticas podem ser feitas utilizando os bytes.
    No byte cada algarismo tem um valor relacionado a sua posição, assim como acontece com os números decimais. No número 222, por exemplo, os algarismos são iguais, mas seus valores são diferentes por ocuparem posições diferentes: o 2 à esquerda vale mais que o 2 central, que vale mais que o 2 à direita.
    Em um byte temos duas posições que chamamos de MSB e LSB, respectivamente "bit mais significativo"  e "bit menos significativo". Essa nomenclatura refere-se ao fato de suas posições serem as duas extremidades do byte, ou seja, o bit 7 e o bit 0.


    Outra nomenclatura importante é o NIBBLE. O nibble é a metade de um byte. Assim temos dois nibbles em cada byte, e dizemos "high nibble" e "low nibble".


     Por enquanto é isso pessoal, na próxima postagem vamos ver como funcionam as portas lógicas.
     Deus abençõe e até mais.

Nenhum comentário:

Postar um comentário