sexta-feira, 11 de novembro de 2011

Sistemas de numeração

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