Conversão de base numérica

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

Conversão de base numérica é o nome dado à passagem de um valor de uma base para outra mantendo o valor quantitativo, mas alterando a simbologia para se adequar à nova base.

Introdução[editar | editar código-fonte]

Atualmente é muito comum o uso de bases numéricas derivadas de 2 ao se utilizar computadores em baixo nível (quando se programa um, por exemplo).

O humano está familiarizado com a base 10 (decimal), no dia-a-dia, já os computadores atuais trabalham exclusivamente com a base 2 (binário), assim é preciso fazer conversões entre estas bases quando se pretende inserir algum valor para ser processado pelo computador.

Obviamente que ninguém vai ficar convertendo números para o binário para então digitá-lo na calculadora e depois converter o resultado para decimal para usá-lo. Esse processo de conversão está, no caso da calculadora, pré-programado para ser feito por ela, o ponto a ser entendido aqui é que internamente ela faz tudo em binário, em outras palavras: ela converte o que foi digitado para binário, faz o cálculo, converte o resultado para decimal e apresenta o resultado.

No entanto quando se está escrevendo um programa é normal a introdução de valores no meio do código, e em muitas situações a digitação de códigos binários é muito complicada/longa para o programador, então existem outros códigos que facilitam a digitação, na prática é muito utilizada a base 8 (octal), e a base 16 (hexadecimal), ambas derivadas da base 2 (note que estas bases facilitam a digitação somente, de qualquer forma ao ser compilado toda e qualquer base usada para escrever o programa é convertida para base 2 para que o valor seja usado pelo processador).

Exemplos[editar | editar código-fonte]

Valores numéricos representados em algumas bases
10 (Decimal) 2 (Binário) 8 (Octal) 16 (Hexadecimal)
0 0 0 0
3 11 3 3
10 1010 12 A
15 1111 17 F
301 100101101 455 12D
1379 10101100011 2543 563
42685 1010011010111101 123275 A6BD

Repare como na base maior (hexadecimal), o número de símbolos usados para representar o mesmo valor é bem menor que nas bases menores, é isso que facilita a digitação e memorização dos valores.

Repare também que no caso da simbologia da base hexadecimal são usadas algumas letras, isso ocorre porque temos símbolos para representar somente os algarismos de 0 a 9, como na base 16 é necessária a representação de algarismos de 10 a 15 então as letras de A até F são utilizadas para isso resultando na sequência: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.

Conversões[editar | editar código-fonte]

A conversão entre bases pode ser realizada por meio de divisões sucessivas, que funciona para qualquer combinação de bases, ou então, para os casos em que a base de origem e de destino pertencem a mesma base logarítmica, a conversão pode ser feita simplesmente por reagrupamento dos algarismos.

Divisões sucessivas[editar | editar código-fonte]

Neste método uma das bases tem que ser a decimal. Assim se nenhuma delas for decimal é necessário primeiro converter a base de origem para decimal e então converter para base de destino.

Tomemos o exemplo da conversão do número base 10 (decimal), 745 para a base 4. Uma série de divisões inteiras é realizada até que o valor zere, o divisor usado é o valor da base de destino e os restos das divisões inteiras é a sequência de algarismos da base de destino. Como a base de origem é decimal podemos usar o método diretamente:

  • 745/4 = 186\rightarrow1
  • 186/4 = 46\rightarrow2
  • 46/4 = 11\rightarrow2
  • 11/4 = 2\rightarrow3
  • 2/4 = 0\rightarrow2

Portanto 745_{10} = 23221_4

Outro exemplo 4C_{18} para a base 7:

Como o valor de origem está na base 18 primeiro precisamos convertê-lo para a base 10:

4C_{18}= 4*18^1+12*18^0 = 72+12 = 84_{10}

Agora sim aplicamos as divisões:

  • 84/7 = 12\rightarrow0
  • 12/7 = 1\rightarrow5
  • 1/7 = 0\rightarrow1

Assim: 4C_{18} = 84_{10} = 150_7

Mais um exemplo: converter 652_8 para a base 3:

652_8 = 6*8^2+5*8^1+2*8^0 = 384+40+2 = 426_{10}

  • 426/3 = 142\rightarrow0
  • 142/3 = 47\rightarrow1
  • 47/3 = 15\rightarrow2
  • 15/3 = 5\rightarrow0
  • 5/3 = 1\rightarrow2
  • 1/3 = 0\rightarrow1

Assim: 652_8 = 426_{10} = 120210_3

Reagrupamento[editar | editar código-fonte]

Quando as bases envolvidas são da mesma base logarítmica então a conversão pode ser facilmente feita por simples reagrupamentos dos algarismos e uso de pequenas tabelas de conversão. Por exemplo, entre as bases 16 e 8 ou entre 2 e 16 ou ainda entre as bases 27 e 9.

Na prática é muito usada a conversão entre as bases 2, 8 e 16 pelos motivos citados anteriormente. Segue uma tabela básica para estas conversões:

Tabela de conversão de bases de origem binária
Decimal 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Binário 0 1 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111
Octal 0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17
Hexadecimal 0 1 2 3 4 5 6 7 8 9 A B C D E F


Convertendo 111010110_2 para a base 16:

Pela tabela vemos que para cada algarismo em hexadecimal são necessários 4 algarismos para realizar sua representação em binário. Então o primeiro passo é separar o valor em base 2 em blocos de 4 algarismos:

111010110_2 = 1.1101.0110

Depois, consultando a tabela convertemos o valor de cada bloco para seu equivalente hexadecimal, assim teremos:

111010110_2 = 1.D.6_{16} = 1D6_{16}

Convertendo 111010110_2 para base 8:

Pela tabela vemos que para cada algarismo em octal são necessários 3 algarismos para realizar sua representação em binário. Então devemos separar o valor em base 2 em blocos de 3 algarismos:

111010110_2 = 111.010.110

Depois, consultando convertemos o valor de cada bloco para seu equivalente octal, assim teremos:

111010110_2 = 7.2.6_{8} = 726_{8}

Finalmente uma conversão do valor 3A8_{16} para octal:

Primeiro convertemos para os blocos binários equivalentes com 4 dígitos:

3A8_{16} = 3.A.8_{16} = 0011.1010.1000_2 = 1110101000_2

Agora reagrupamos em blocos de 3 dígitos:

1110101000_2 = 1.110.101.000_2 = 1.6.5.0_8

Assim: 3A8_{16} = 1650_8


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

A técnica de divisões sucessivas é utilizada para conversão de números inteiros do sistema decimal para o binário. Esta técnica consiste em dividir o número original pela base 2, o resto da divisão será um dígito e o resultado da divisão é novamente dividido por 2. Esta última etapa se repete até que o resultado da divisão seja zero. Para melhor compreensão do método, a imagem ao lado mostra um exemplo de conversão do número decimal 19 para binário.

Exemplo de conversão do número decimal 19 para binário.

Como mostra o exemplo, após as sucessivas divisões, os dígitos (resto da divisão) são ordenados a partir da esquerda para direita, formando assim o código binário.

Para a conversão de números fracionários, é utilizada a técnica de multiplicações sucessivas, no entanto, a parte inteira do número ainda é convertida pelo método das divisões sucessivas. Neste método, multiplica-se o número fracionário por 2 (base do sistema binário) e a parte inteira do número resultante é o primeiro dígito fracionário do binário. A parte fracionária restante é novamente multiplicada por 2 e a parte inteira do número resultante é o segundo dígito fracionário do binário. Esses passos são seguidos até que o resultado da multiplicação seja um número inteiro ou até a precisão desejada.

Exemplo
Conversão do número 19,6875

Do exemplo anterior: (19)10 = (10011)2
0,6875 x 2 = 1,375
0,375 x 2 = 0, 75
0,75 x 2 = 1,5
0,5 x 2 = 1,0 – fim.
(19,6875)10 = (10011,1011)2

Dica: Se as divisões sucessivas forem feitas com o uso de uma calculadora, é possível saber o resto da divisão da seguinte forma: se o resultado é um número inteiro, então o resto é 0; se o resultado tem parte fracionária, então o resto é 1. Lembre que quando o resultado for fracionário, utiliza-se somente a parte inteira para realizar a próxima divisão.[1]

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

A conversão de números da base 2 para base 10 é bastante simples. Basta reescrever o número numa expansão de base 2, conforme o exemplo abaixo.
(0110)2 = 0(3)1(2)1(1)0(0)
0*2^3 + 1*2^2 + 1*2^1 +0*2^0 = 0 + 1*4 + 1*2 + 0 = 4 + 2 = (6)10[2]

Conversão de octal para decimal[editar | editar código-fonte]

A conversão de números da base 8 para base 10 é muito semelhante à conversão de binário para decimal. Basta reescrever o número numa expansão de base 8, conforme o exemplo a seguir. (372)8 = 3*82 + 7*81 + 2*80 = 3*64 + 7*8 + 2*1 = (250)10[2]

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

A conversão de números de base 8 para a base 2 é feita convertendo cada dígito no seu equivalente binário de 3 bits. A tabela abaixo mostra o equivalente binário de cada dígito do sistema octal:

Dígito octal 0 1 2 3 4 5 6 7
Binário equivalente 000 001 010 011 100 101 110 111

Por exemplo, para converter (472)8 em binário, devemos substituir os números: 4 em 100; 7 em 111; 2 em 010; Desta forma, obtemos o número binário 100111010.[2]

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

Para fazer a conversão de números binários para octais, utiliza-se a mesma tabela de conversão utilizada para converter números octais em binários. Para isso, cada grupo de 3 bits do sistema binário é convertido em seu dígito equivalente do sistema octal conforme exemplo a seguir:

O binário 100111010 tem os seguintes grupos de 3 bits: 100, 111 e 010. Assim, o seu equivalente em octal é o número 472.
Caso o binário não tenha grupos regulares de 3 bits, podem ser adicionados até 2 0s à esquerda do número. Por exemplo, o binário 11010110 pode ser adicionado de 1 zero, passando a ser composto pelos grupos 011, 010 e 110. [2]

Conversão de decimal para hexadecimal[editar | editar código-fonte]

Da mesma maneira que é feita a conversão de decimal para binário, a conversão para hexadecimal é feita utilizando as divisões sucessivas. Entretanto, nesse caso, as divisões dos números inteiros são feitas por 16.[2]

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

Para transformar números hexadecimais em binários, cada dígito hexadecimal deve ser convertido no seu equivalente binário de 4 bits, conforme a tabela (X).
Por exemplo, o número (BA6)16 = 101110100110 , já que B equivale a 1011, A equivale a 1010 e 6 equivale a 0110.[2]

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

Fazendo o inverso do processo anterior, é possível transformar números binários em hexadecimais. Ou seja, deve-se converter os grupos de 4 bits do sistema binário em seus dígitos equivalente do sistema hexadecimal. Assim como para conversão de sistema binário em octal, são acrescentados 0s para completar os grupos do sistema binário quando necessário.
Exemplo: Para converter o número 1110100110, são adicionados dois zeros a esquerda do número, formando os grupos de 4 bits 0011, 1010 e 0110. Convertendo nos equivalentes em hexadecimal, temos o número 3A6.[2]


Referências

  1. Uyemura, John P.. Sistemas digitais: uma abordagem integrada. São Paulo: Editora Thomson Pioneira, 2002. 7-10 pp.
  2. a b c d e f g Tocci, Ronald J.. Sistemas Digitais: princípios e aplicações. São Paulo: Pearson Prentice Hall, 2003.

Ligações externas[editar | editar código-fonte]

Wiki letter w.svg Este artigo sobre matemática é mínimo. Você pode ajudar a Wikipédia expandindo-o.