Em Eletrônica e Computação, as bases mais utilizadas para sistemas de numeração são:
- Binária (Base 2)
- Octal (Base 8)
- Decimal (Base 10)
- Hexadecimal (Base 16)
Uma relação entre elas pode ser visualizada na tabela a seguir
Binária | Octal | Decimal | Hexadecimal |
00000 | 00 | 00 | 00 |
00001 | 01 | 01 | 01 |
00010 | 02 | 02 | 02 |
00011 | 03 | 03 | 03 |
00100 | 04 | 04 | 04 |
00101 | 05 | 05 | 05 |
00110 | 06 | 06 | 06 |
00111 | 07 | 07 | 07 |
01000 | 10 | 08 | 08 |
01001 | 11 | 09 | 09 |
01010 | 12 | 10 | 0A |
01011 | 13 | 11 | 0B |
01100 | 14 | 12 | 0C |
01101 | 15 | 13 | 0D |
01110 | 16 | 14 | 0E |
01111 | 17 | 15 | 0F |
10000 | 20 | 16 | 10 |
10001 | 21 | 17 | 11 |
10010 | 22 | 18 | 12 |
10011 | 23 | 19 | 13 |
10100 | 24 | 20 | 14 |
De acordo com a tabela acima, o número decimal 20 é representado por 2010, isto é, escreve-se o número e um índice indicando a base em que está representado. Tem-se portanto, a seguinte equivalência:
101002 = 248 = 2010 = 1416
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
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
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).
= 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 10Vamos 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.
Conversão de Números da Base 10 para uma Base b qualquerA 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áriaSe 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. 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 quaisquerPara 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.
fontes: http://www.inf.ufsc.br/ine5365/sistnum.html
http://wwwusers.rdc.puc-rio.br/rmano/sn2cvb.html
Nenhum comentário:
Postar um comentário