Conversão de base numérica

Origem: Wikipédia, a enciclopédia livre.
Ir para: navegação, pesquisa
Searchtool.svg
Esta página ou secção foi marcada para revisão, devido a inconsistências e/ou dados de confiabilidade duvidosa (desde fevereiro de 2008). Se tem algum conhecimento sobre o tema, por favor, verifique e melhore a consistência e o rigor deste artigo. Considere utilizar {{revisão-sobre}} para associar este artigo com um WikiProjeto.

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 a nova base.

Índice

[editar] Introdução

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).

[editar] Exemplos

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 haxadecimal 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.

[editar] Conversões

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.

[editar] Divisões sucessivas

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

[editar] Reagrupamento

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

[editar] Ligações externas

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

Variantes
Ações
Navegação
Colaboração
Imprimir/exportar
Ferramentas