Conversão entre sistemas numéricos

Origem: Wikipédia, a enciclopédia livre.
Ir para: navegação, pesquisa

A conversão entre sistemas numéricos é feita com base em algumas regras e serve para que se obtenha o valor de um elemento no sistema numérico mais adequado a cada situação. Entre os sistemas numéricos mais utilizados na computação há o binário, decimal, octal e sistema hexadecimal. Cada um destes apresentando sua própria faixa de valores possíveis, e cada um possui uma aplicação específica, dentro da Ciência da Computação.

Sistema binário[editar | editar código-fonte]

Conversão de decimal em binário[editar | editar código-fonte]

Para realizar a conversão utiliza-se o método de divisão repetida.

Para converter, por exemplo, o número decimal 1985 em binário deve-se fazer o seguinte:

  1. Dividir o número decimal por 2. Caso o resultado seja exato, aquela divisão terá resto 0 (zero), se não for exato terá resto 1 (um). Esse valor deve ser anotado da direita para a esquerda ou como explicado abaixo do exemplo.
  2. Deve-se dividir o número até que o quociente da divisão seja igual a 0 (zero).
Divisão Quociente Resto
1985/2 992 1
992/2 496 0
496/2 248 0
248/2 124 0
124/2 62 0
62/2 31 0
31/2 15 1
15/2 7 1
7/2 3 1
3/2 1 1
1/2 0 1
  1. Observe que o resultado é obtido juntando o resultado da última para a primeira divisão, ou seja, de baixo para cima, onde o resultado é o seguinte número binário: 11111000001.

Outra forma desta conversão (mais prática) é ir subtraindo o número em decimal das potências de base 2 até dar 0. Subtraia da maior potência de base 2 possível. Deve se marcar 1 quando você efetua a subtração, e 0 no restante (os zeros à esquerda devem ser desprezados).

Por exemplo:

      128 64 32 16 8 4 2 1
22 -->  0  0  0  1 0 1 1 0 
Logo 22 em decimal = 10110 em binário

O maior número de base 2 possível pra ser subtraído de 22 é 16, sobrando 6. O maior número possível para subtrair de 6 é 4, sobrando 2. O maior número a ser subtraído de 2 é o próprio 2, resultando 0 e assim finalizando a conversão.

Outro exemplo:

      128 64 32 16 8 4 2 1
35 -->  0  0  1  0 0 0 1 1 
logo 35 em decimal = 100011 em binário

pois: 35 - 32 = 3
3 - 2  = 1
1 - 1  = 0

Se o número em decimal é menor que zero, toma-se o valor absoluto, ex. "-5" --> "5", iniciamos o quociente com um quociente > 1, enquanto o quociente for maior que 1 faz-se consecutivamente a divisão do valor absoluto por 2 e iguala-se imediatamente a seguir o valor absoluto ao valor do quociente. Se o número de vezes em que foi possível dividir por 2 e obter um quociente > 1 for inferior a um valor múltiplo de 8 então acrescenta-se a esse número vezes o valor que for necessário para chegar ao próximo múltiplo de 8. A seguir pega-se no número de vezes e cria-se uma variável que será igual a [2^(Número de vezes)]+[número decimal negativo inicial] A seguir pega-se no valor desta variável e converte-sa para binário como visto em cima.

Se o número em decimal tiver casas decimais, ex (1.34) acrescentamos à expressão em binário um "." e considera-se um número de vezes em que se pretenda converter para binário a parte de casas decimais ex: enquanto não chegar a 50 vezes fazemos a parte com casas decimais ser multiplicada por 2, a seguir agarramos na parte à esquerda da virgula do resultado desta multiplicação e adicionamo-la à conversão em binário à direita do ".".

Em JavaScript poderia ser feito assim:

function decParaBin( numDecimal ) {
        for ( binário = []; numDecimal > 1; ) {
                resto = Math.floor( numDecimal % 2 );
                numDecimal /= 2;
                binário.unshift( resto == 1 ? 1 : 0 );
        }

        if ( !/[^0]/.test( binário.join('') ) ) binário.unshift( 1 );

        return binário.join('');
}

//Ou
x = 170;
x.toString( 2 ); //10101010

Conversão de Binário para Decimal[editar | editar código-fonte]

Abaixo o número binário 10010011 será convertido no número decimal 147, conforme os passos:

Da direita para a esquerda, eleva-se à potência do índice e multiplica-se pelo dígito binário (0 ou 1). Após realizada as operações para todos os índices (bits), os valores resultantes são somados e o total representa o número decimal correspondente ao binário.

Em JavaScript:

function binParaDec( numBinario ) {
    var base2 = [], decimal = 0, binario = numBinario.toString();
      
    if ( binario[i] == 0 ) delete base2[i];
    else decimal += base2[i];

    return decimal;
}

//Ou simplesmente
x = 10010011;
parseInt( x, 2 ); //147

Hexadecimal[editar | editar código-fonte]

Conversão de Decimal para Hexadecimal[editar | editar código-fonte]

Para converter de decimal para hexadecimal, procede-se do mesmo modo que na conversão decimal-binário. Basta agora dividir por 16 e não mais por 2.



7 (12 é a letra C) 1 = 7C1

Resultado: 7C1

Para obter o resultado juntamos o resultado da última divisão com o resto das divisões anteriores na sequência, aqui temos que transformar qualquer número maior que 9 em suas respectivas representações alfabéticas. Como em nosso exemplo temos os respectivos resultados, 7, 12 e 1, temos que transformar 12 em C, seu correspondente alfabético. Assim 1985 decimal é igual a 7C1 em hexadecimal.

Conversão de Hexadecimal para Decimal[editar | editar código-fonte]

Para realizar a conversão realizamos os seguintes passos:

  • Primeiro transformamos cada dígito alfabético em número. assim o C será convertido para 12 e os números ficarão 7, 12 e 1.
  • Agora multiplicamos cada número por 16m, onde m é casa decimal onde ele se encontra, sendo que o dígito mais a direita é 0.
 

Obtemos assim o resultado esperado. O número 7C1 convertido para 1985.

Octal[editar | editar código-fonte]

Conversão de Decimal para Octal[editar | editar código-fonte]

Utiliza-se divisão sucessiva para encontrar o valor octal a partir o número decimal. Dividimos sucessivamente o número 1985 até encontrarmos resultados que sejam menores ou iguais a sete.

       1985 | 8
         385   248 | 8
          65    08   31 | 8
           1     0    7   3

O resultado da divisão é igual a 3701

 1985|8

=== Conversão de Octal para Decimal ===
Resultado da divisão 3701. Obtemos esse número juntando o resultado da última divisão e o resto das divisões anteriores.
<pre>
        3         7        0        1
      3 X 8³    7 X 8²   0 X 8¹   1 X 8°
               +        +        +                          
       1536       448       0        1             
                    =
                   1985

Ver também[editar | editar código-fonte]