Testes A/B - Experimentando conteúdo e otimizando conversões - Intercon 2012 -
Conversão Entre Bases...
Transcript of Conversão Entre Bases...
Início Cursos Blog A Empresa Contato
Curso de Lógica da Programação na
Prática.
Conversão EntreBases Numéricas.Na lição anterior tivemos uma
introdução aos números decimais,
binários, hexadecimais e octais.
Nesta lição vamos aprender algumastécnicas para transformar números debases diferentes entre si.
Conversão de Decimal paraBinário
Para encontrar o número bináriocorrespondente a um número decimal,são realizadas sucessivas divisões donúmero decimal por 2.
Em seguida, o resto da divisão de cadaoperação é coletado de forma invertida,da última para a primeira operação dedivisão, como na figura, onde foi obtido onúmero binário correspondente aonúmero decimal 25:
Na figura acima vemos que o númerodecimal foi dividido sucessivamente por 2e os resultados foram coletados daúltima para a primeira divisão, formandoo número binário.
Conversão de Binário paraDecimal
Como vimos na lição anterior, paradescobrir o número decimalcorrespondente a um número binário,basta calcular a soma de cada um dosdígitos do número binário multiplicadopor 2 (que é a sua base) elevado àposição colunar do número, que, dadireita para a esquerda começa em 0.
Vejamos uma conversão do númerobinário que obtivemos na conversãoacima:
Conversão de Decimal paraHexadecimal
A conversão de números decimais parahexadecimais é idêntica à conversão dedecimal para binário, exceto que adivisão deve ser realizada por 16, que éa base dos hexadecimais.
Quando tiver dúvida sobre o valor emhexadecimal de algum resto, verifique natabela da lição anterior.
Conversão de Hexadecimal emDecimal
A conversão de números hexadecimaisem decimais é realizada através da somados dígitos hexadecimais multiplicadospela base 16 elevada à posição colunarcontando da direita para a esquerda,começando em 0, de forma semelhante àconversão de binários em decimais:
Note que os caracteres que definem os
dígitos hexadecimais A, B e C foramsubstituídos pelos valores equivalentesem decimais 10, 11 e 12 de acordo coma tabela da lição anterior para arealização do cálculo.
Conversão de Decimal em Octal
Assim como nas conversões anteriores,dividese o decimal pela base para a qualse quer obter o número, no caso, 8:
Vimos que foram coletados os restos decada divisão da última para a primeirapara formar o número octal.
Conversão de Octal em Decimal
A conversão de números octais emdecimais é obtida através da soma dosdígitos do número octal multiplicadospela base 8 elevada à posição colunar dodígito, começando em 0 da direita para aesquerda:
Conversão de Binário emHexadecimal
Para converter um número binário emhexadecimal, separase o número binárioem grupos de 4 bits, da direita para aesquerda. Em seguida, transformasecada grupo de 4 bits em hexadecimal. Aofinal, simplesmente unese os resultadosem um só:
Caso o número de dígitos do númerobinário não seja múltiplo de 4, completase os dígitos à esquerda com zeros (0):
Conversão de Binário em Octal
Para converter números binários emoctais, separase os dígitos do númerobinário em grupos de 3 bits da direitapara a esquerda. Em seguida transformase cada grupo individual de 3 bits emoctal. Ao final, unese os resultados:
Caso o número de dígitos do númerobinário não seja múltiplo de 3, completase os dígitos à esquerda com zeros (0):
Conversão de Hexadecimal emBinário
Para converter números hexadecimaisem binários, decompõemse o númerohexadecimal diretamente em binários de
4 dígitos. Os zeros mais à esquerda doresultado binário podem ser omitidos:
Conversão de Octal em Binário
Para converter números octais embinários, decompõemse o número octaldiretamente em binários de 3 dígitos. Oszeros mais à esquerda do resultadobinário podem ser omitidos:
Conversão de Octal emHexadecimal
Para converter um número octal emhexadecimal, transformase primeiro ooctal em binário e em seguida o binárioem hexadecimal:
Conversão de Hexadecimal emOctal
Para converter um número hexadecimalem octal, transformase primeiro ohexadecimal em binário e em seguida obinário em octal:
Conversões entre Bases emRuby
Na lição anterior vimos que temos,basicamente:
Números Decimais, de base 10.
Números Binários, de base 2.
Números Hexadecimais, de base 16.
Números Octais, de base 8.
Em Ruby há uma maneira bem simplesde converter números entre basesdiferentes.
Veja este exemplo no irb:
Vejamos como é feita essa conversão:
Em primeiro lugar, o número emquestão está no formato String(observe as aspas). Em seguida, omesmo é convertido em inteirocom o .to_i, informando a baseentre parênteses para a qual omesmo deve ser convertido, nocaso, base 10, para que sejaconvertido em inteiro decimal.
Em seguida o número é convertidoem String novamente, informandoa base para a qual o número deveser interpretado, no caso, base 2,para que seja convertido embinário.
Na segunda operação, o processo
inverso é realizado. O númerobinário que está no formato Stringé convertido em inteiro com o.to_i e é informada a base 2 parao mesmo, que logo em seguida éconvertido novamente em String,dessa vez de base 10.
E, é claro que Ruby também facilita aconversão entre outras bases. Nas linhassubsequentes do nosso teste sãoconvetidos diversos exemplos queutilizamos em nossa lição entre diversasbases.
Conversão entre bases em Java
Em Java, também é fácil converternúmeros entre bases diferentes. Vejaeste programa simples:
/**********************************************************
* Programa: programa em Java que demonstra a
* conversão de números entre bases diferentes
*
* Compilação: javac ConversaoEntreBases.java
* Execução: java ConversaoEntreBases
*
* % java ConversaoEntreBases
* % ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐
* % Decimal 211 para Binário: 11010011
* % Decimal 211 para Octal: 323
* % Decimal 211 para Hexadecimal: d3
* % ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐
* % Binário: 11101110 para Decimal: 238
* % Binário: 11101110 para Octal: 356
* % Binário: 11101110 para Hexadecimal: ee
* % ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐
* % Octal: 77 para Decimal: 63
* % Octal: 77 para Binário: 111111
* % Octal: 77 para Hexadecimal: 3f
* % ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐
Testando o programa:
Voltar Próximo: Conversão de IPDecimal para Binário
Lições
Capítulo 1Capítulo 2Capítulo 3Capítulo 4Capítulo 5Capítulo 6
Capítulo 7
Registros (Arquivos)
Métodos (Funções)
Algoritmos com Métodos
Recursividade
Sistemas de Numeração
Conversão Entre Bases Numéricas
IP Decimal para Binário
IP Binário para Decimal
Desenvolvido por:
Marcos Cesar Kossoski