terça-feira, 1 de maio de 2012

SISTEMAS DE NUMERAÇÃO

Conversões entre Bases 
Vamos analisar agora as regras gerais para converter números entre duas bases quaisquer. 

 Conversões entre as bases 2, 8 e 16 
As conversões mais simples são as que envolvem bases que são potências entre si. Vamos exemplificar com a conversão entre a base 2 e a base 8. Como 23 = 8, separando os bits de um número binário em grupos de tres bits (começando sempre da direita para a esquerda!) e convertendo cada grupo de tres bits para seu equivalente em octal, teremos a representação do número em octal. 
Por exemplo: 101010012 = 10.101.0012 (separando em grupos de 3, sempre começando da direita para a esquerda) Sabemos que 0102 = 28 ; 1012 = 58 ; 0012 = 18 portanto 101010012 = 2518 Se você ainda não sabe de cor, faça a conversão utilizando a regra geral. 
Vamos agora exemplificar com uma conversão entre as bases 2 e 16. Como 24 = 16, basta separarmos em grupos de 4 bits (começando sempre da direita para a esquerda!) e converter. 
Por exemplo: 110101011012 = 110.1010.11012 (separando em grupos de 4 bits, sempre começando da direita para a esquerda) 
 Sabemos que 1102 = 616; 10102 = A16 ; 11012 = D16 ; portanto 110101011012 = 6AD16 
 Vamos agora exercitar a conversão inversa. 
Quanto seria 3F5H (lembrar que o H está designando "hexadecimal") em octal? 
O método mais prático seria converter para binário e em seguida para octal. 3F5H = 11.1111.01012 (convertendo cada dígito hexadecimal em 4 dígitos binários) = = 1.111.110.1012 (agrupando de tres em tres bits) = = 17658 (convertendo cada grupo de tres bits para seu valor equivalente em octal). 

 Conversão de Números em uma base b qualquer para a base 10 
Vamos lembrar a expressão geral já apresentada: Nb = an.bn + .... + a2.b2 + a1.b1 + a0.b0 + a-1.b-1 + a-2.b-2 + .... + a-n.b-n A melhor forma de fazer a conversão é usando essa expressão. 
Tomando como exemplo o número 1011012, vamos calcular seu valor representado na base dez. 
Usando a expressão acima, fazemos: 1011012 = 1x25 + 0x24 + 1x23 + 1x22 + 0x21 + 1x20 = 32 + 0 + 8 + 4 + 0 + 1 = 4510 
 Podemos fazer a conversão de números em qualquer base para a base 10 usando o algoritmo acima. Exemplos: 
a) Converter 4F5H para a base 10 . 
Solução: 
Lembramos que o H significa que a representação é hexadecimal (base 16). 
Sabemos ainda que F16=1510. Então: 4x162 + 15x161 + 5x160 = 4x256 + 15x16 + 5 = 1024 + 240 + 5 = 126910 
 b) Converter 34859 para a base 10. Solução: 3x93 + 4x92 + 8x91 + 5x90 = 3x729 + 4x81 + 8x9 + 5 = 2187 + 324 + 72 + 5 = 258810. 
 c) Converter 7G16 para a base 10. 
Solução: 
Uma base b dispõe dos algarismos entre 0 e (b-1). 
Assim, a base 16 dispõe dos algarismos 0 a F e portanto o símbolo G não pertence à representação hexadecimal. 
 d) Converter 1001,012 para a base 10. Solução: 1x23 + 0x22 + 0x21 + 1x20 + 0x2-1 + 1x2-2 = 8 + 0 + 0 + 1 + 0 + 0,25 = 9,2510 
 e) Converter 34,35 para a base 10. Solução: 3x51 + 4x50 + 3x5-1 = 15 + 4 + 0,6 = 19,610 f) Converter 38,38 para a base 10. Solução: Uma base b dispõe dos algarismos entre 0 e (b-1). 
Assim, a base 8 dispõe dos algarismos 0 a 7 e portanto o algarismo 8 não existe nessa base. 
A representação 38,3 não existe na base 8. 

 Conversão de Números da Base 10 para uma Base b qualquer 
A conversão de números da base dez para uma base qualquer emprega algoritmos que serão o inverso dos acima apresentados. Os algoritmos serão melhor entendidos pelo exemplo que por uma descrição formal. Vamos a seguir apresentar os algoritmos para a parte inteira e para a parte fracionária: Parte Inteira: O número decimal será dividido sucessivas vezes pela base; o resto de cada divisão ocupará sucessivamente as posições de ordem 0, 1, 2 e assim por diante até que o resto da última divisão (que resulta em qüociente zero) ocupe a posição de mais alta ordem. Veja o exemplo da conversão do número 1910 para a base 2:
Experimente fazer a conversão contrária (retornar para a base 10) e ver se o resultado está correto.

Parte Fracionária
Se o número for fracionário, a conversão se fará em duas etapas distintas: primeiro a parte inteira e depois a parte fracionária. Os algoritmos de conversão são diferentes. O algoritmo para a parte fracionária consiste de uma série de multiplicações sucessivas do número fracionário a ser convertido pela base; a parte inteira do resultado da primeira multiplicação será o valor da primeira casa fracionária e a parte fracionária será de novo multiplicada pela base; e assim por diante, até o resultado dar zero ou até encontrarmos o número de casas decimais desejado. Por exemplo, vamos converter 15,6510 para a base 2, com 5 e com 10 algarismos fracionários:

Obs.: Em ambos os casos, a conversão foi interrompida quando encontramos o número de algarismos fracionários solicitadas no enunciado. No entanto, como não encontramos resultado 0 em nenhuma das multiplicações, poderíamos continuar efetuando multiplicações indefinidamente até encontrar (se encontrarmos) resultado zero. No caso de interrupção por chegarmos ao número de dígitos especificado sem encontramos resultado zero, o resultado encontrado é aproximado e essa aproximação será função do número de algarismos que calcularmos. Fazendo a conversão inversa, encontraremos:

Com 5 algarismos fracionários:
Parte inteira: 11112 = 1510
Parte fracionária: 0,101002 = 1x2-1 + 0x2-2 + 1x2-3 + 0x2-4 + 0x2-5 = 0,5 + 0,125 = 0,62510


Com 10 algarismos fracionários:

Parte inteira: 11112 = 1510
Parte fracionária: 0,10100110012 = 1x2-1 + 0x2-2 + 1x2-3 + 0x2-4 + 0x2-5 + 1x2-6 + 1x2-7 + 0x2-8 + 0x2-9 + 1x2-10 = 1/2 + 1/8 + 1/64 + 1/128 + 1/1024 = 0,5 + 0,125 + 0,015625 + 0,0078125 + 0,0009765625 = 0,649414062510


Ou seja, podemos verificar (sem nenhuma surpresa) que, quanto maior número de algarismos forem considerados, melhor será a aproximação.


Conversão de Números entre duas Bases quaisquer
Para converter números de uma base b para uma outra base b' quaisquer (isso é, que não sejam os casos particulares anteriormente estudados), o processo prático utilizado é converter da base b dada para a base 10 e depois da base 10 para a base b' pedida.
Exemplo: Converter 435 para ( )9.
435 = (4 x 5 + 3)10 = 2310 ==> 23/9 = 2 (resto 5) logo 435 = 2310 = 259

Nenhum comentário: