quarta-feira, 3 de junho de 2009

Conversão entre bases numéricas

Todo número inteiro positivo de qualquer base pode ser convertido para qualquer outra base numérica através da aplicação de um teorema numérico proveniente da teoria dos números. Sabemos que, pelo seguinte teorema, seja B um inteiro positivo maior do que 1, então todo inteiro positivo N pode ser representado de maneira única da seguinte forma:

N = Dn x B^n-1 + Dn-1 x B^n-2 + ... + D2 x B^1 + D1 x B^0

Sendo n a quantidade de algarismos, D cada algarismo do número e B a base do número. Onde n>=1, 0<=D<B, Dn o algarismo mais significativo e D1 o algarismo menos significativo.

Por exemplo o número em base decimal 53742, que possui cinco algarismos, pode ser escrito na forma 5 x 10^4 + 3 x 10^3 + 7 x 10^2 + 4 x 10^1 + 2 x 10^0.

Para expressarmos 53742, por exemplo, na base 7 vamos proceder de forma a obter informações semelhantes a estas, onde 7 irá representar o papel de 10 no que acabamos de descrever. Primeiro dividimos 53742 por 7 obtendo quociente 7677 e resto 3. Em seguida dividimos este quociente 7677 por 7 obtendo um segundo quociente igual a 1096 e resto 5. Seguindo repetidamente este procedimento até chegarmos a um quociente nulo, obtendo a seguinte seqüência de igualdades:

53742 = 7 x 7677 + 3
7677 = 7 x 1096 + 5
1096 = 7 x 156 + 4
156 = 7 x 22 + 2
22 = 7 x 3 + 1
3 = 7 x 0 + 3

Como a seqüência dos quocientes é decrescente e formada somente por inteiros positivos ela deve atingir o valor zero. Na primeira destas equações substituímos o valor de 7677 dado na segunda. Na expressão resultante substituímos o valor de 1096 dado na terceira, nesta o valor de 156 dado na quarta e assim sucessivamente obtendo a seguinte expressão:

53742 = 7 x (7 x 1096 + 5) + 3
= 7^2 x 1096 + 5 x 7 + 3
= 7^2 x (7 x 156 + 4) + 5 x 7 + 3
= 7^3 x 156 + 4 x 7^2 + 5 x 7 + 3
= 7^3 x (7 x 22 + 2) + 4 x 7^2 + 5 x 7 + 3
= 7^4 x 22 + 2 x 7^3 + 4 x 7^2 + 5 x 7 + 3
= 7^4 x (7 x 3 + 1) + 2 x 7^3 + 4 x 7^2 + 5 x 7 + 3
= 3 x 7^5 + 1 x 7^4 + 2 x 7^3 + 4 x 7^2 + 5 x 7 + 3

Esta expressão é a representação do número decimal 53742 na base 7 e é denotado por 312453_7, ou seja, 53742_10 = 312453_7.

Observa-se que por toda a seqüência de divisões pela base, os restos obtidos formam justamente os algarismos do número resultante na conversão, obtendo primeiro o algarismo menos significativo até, na última divisão, o mais significativo.

Para denotarmos números em base maior que 10 temos que utilizar algarismos extras pois os algarismos numéricos são somente 10, de 0 a 9. Deste modo é padrão utilizar as letras do alfabeto para representar os números de 10 em diante, sendo A=10, B=11, C=12 etc.

Para expressarmos o número decimal 76269, por exemplo na base 13, aplicamos a seqüência de divisões por 13, obtendo a seguinte seqüência de igualdades:

76269 = 13 x 5866 + 11
5866 = 13 x 451 + 3
451 = 13 x 34 + 9
34 = 13 x 2 + 8
2 = 13 x 0 + 2

Portando:

76269_10 = 2 x 13^4 + 8 x 13^3 + 9 x 13^2 + 3 x 13^1 + 11 x 13^0 = 2893B_13

Até agora vimos exemplos de conversão em somente um sentido, de base decimal para outra base numérica. Para o sentido inverso, de qualquer base para a base decimal, basta aplicarmos a fórmula do teorema sem necessitar da seqüência de divisões, efetuando apenas o somatório dos algarismos multiplicados pela base elevada a potência entre n-1 à 0. Por exemplo:

E5CB_16 = 14 x 16^3 + 5 x 16^2 + 12 x 16^1 + 11 x 16^0 = 58827_10

Lembrando que E=14, C=12 e B=11.

E para conversões entre bases que não sejam uma delas a base decimal, o processo prático utilizado é converter de uma base dada para a base 10 e depois da base 10 para a outra base pedida.

É também possível a conversão de números não inteiros, aplicando o teorema com potências negativas. Por exemplo 0,572 = 5 x 10^-1 + 7 x 10^-2 + 2 x 10^-3. Para a conversão da parte fracionária realiza-se uma seqüência de multiplicações pela base ao invés de divisões sucessivas, mas esta explicação ficará para um próximo artigo.

Observação: Pelo motivo das limitações para a exibição deste texto no blog, foi adotada a notação n_b, sendo n o número e b a sua base.

Um comentário:

  1. Estava as voltas procurando material sobre conversão numericas.
    Parece até que só existem números Binários, Octal, Hex e Decimal...
    Eu, por exemplo, preciso realizar conversões em bases maiores de 50.
    E a falta de material para referência é gritante.
    Valeu manolo
    o/

    ResponderExcluir