Aula 03 Conversão entre bases numéricas

Propaganda
UNIVERSIDADE ESTADUAL DE CAMPINAS
FACULDADE DE ENGENHARIA ELÉTRICA E DE COMPUTAÇÃO
EA – 772 CIRCUITOS LÓGICOS
1S-2016 – TURMA B
Aula 03
Conversão entre bases numéricas
PROF. JOSÉ W M BASSANI
EA-772 Circuitos Lógicos – Aula 03
Primeiro Semestre de 2016, Professor: Bassani, JWM
MARÇO DE 2016
Aula 03.
Iniciamos também, nesta aula, o estudo da mudança ou conversão entre bases numéricas. A
conversão foi tratada de modo geral e ao final algumas regras práticas foram explicitadas.
Descrevemos a conversão por meio de algoritmos simplificados. Algoritmos foram definidos
como conjuntos de passos necessários para se realizar alguma tarefa bem definida. O
algoritmo para converter um número escrito em uma base b1 para qualquer outra b2 foi,
simplificadamente, o seguinte:
1. Expresse o número na notação polinomial na base b1;
2. Avalie o polinômio, usando aritmética na base b2;
(Avaliar significa obter o número após atribuição dos valores numéricos dos coeficientes do
polinômio e das respectivas potências da base)
Fizemos primeiro a conversão para a base 10. Dado um número em qualquer base estudamos
a sua conversão para a base 10. Queremos converter um número da base 8 (b1) para a base
10 (b2). Foi então seguido o seguinte algoritmo.
1. (26)8 = 2x81 + 6x80. ( (N)b1 expresso na notação polinomial);
2. 2x8 = 16 e 6x1 = 6. Assim, 16 + 6 = 22 e essa aritmética está sendo feita na base b2, ou
seja, na base 10, resultando portanto (22)10.
Para adiantar o seu raciocínio em outras bases foram dadas dicas de alguns números em
outras bases.
(2)10 = (10)2
(3)10 = (10)3
(4)10 = (10)4
O que vem a ser então a base numérica? Corresponde ao número de dígitos (ou símbolos)
usados para representar os números. Por exemplo, na base 10 há 10 dígitos que são os inteiros
de 0 a 9. Por isso que na definição de número explicitamos que b era a base definida como um
número inteiro maior que 1 e que os coeficientes do polinômio (os dígitos do número)
estariam contidos entre 0 e b-1. Na base 3 temos 3 dígitos 0, 1 e 2 . Na base 4, teríamos 0, 1, 2
e 3. Logo, 4 na base 4 será o maior dígito mais 1, ou seja, um número com dois dígitos (10)4.
Isto é a mesma coisa em qualquer base. O número 10 na base 10 é 1 acima de 9 e precisa de
dois dígitos, portanto (10)10.
Veja como ficariam as potências de 2 dos números nas diversas bases:
22 = (100)2
2
EA-772 Circuitos Lógicos – Aula 03
Primeiro Semestre de 2016, Professor: Bassani, JWM
32 = (100)3
42 = (100)4
Qualquer potência da base corresponderá a um número com apenas um digito 1 na posição
relativa ao valor da base. Assim, 28 = (100000000)2, 515 = (1000000000000000)5. É isso. Como
seria 2n – 1 na base 2? Veja se seria um número assim: (1111...11)2 com o número de 1´s igual
a n.
Foi apresentada a tabela de números em diferentes bases para que você consiga efetuar
aritmética em outras bases.
2
4
5
8
10
12
16
Binária
Quaternária
Quinária
Octal
Decimal
Duodecimal
Hexadecimal
0000
00
00
00
00
00
0
0001
01
01
01
01
01
1
0010
02
02
02
02
02
2
0011
03
03
03
03
03
3
0100
10
04
04
04
04
4
0101
11
10
05
05
05
5
0110
12
11
06
06
06
6
0111
13
12
07
07
07
7
1000
20
13
10
08
08
8
1001
21
14
11
09
09
9
1010
22
20
12
10
0A
A
1011
23
21
13
11
0B
B
1100
30
22
14
12
10
C
1101
31
23
15
13
11
D
1110
32
24
16
14
12
E
1111
33
30
17
15
13
F
3
EA-772 Circuitos Lógicos – Aula 03
Primeiro Semestre de 2016, Professor: Bassani, JWM
Vamos agora para o exemplo:
Converter (26)8 para a base 5.
1. (26)8 = 2x81+6x80. ( (N)b1 expresso na notação polinomial);
2. Avaliar com aritmética na base 5. Assim, ficamos com (2)5x(13)5 + (11)5x(1)5
Deste modo: (2)5x(13)5+(11)5x(1)5 o que resultaria (31)5 + (11)5 = (42)5. Para se exercitar
converta cada um para a base 10 e veja se (26)8 = (42)5.
Nem sempre efetuar a aritmética nas outras bases diferentes da base 10 é conveniente ou
você irá se lembrar de como fazer. Vamos então explorar um algoritmo para converter
qualquer número da base 10 para qualquer base, operando sempre na base 10. Serão as
conversões de (N)10 =(N)b.
Algoritmo para converter a parte inteira, ou seja, cálculo de c1 c2 ... c n −1 c n .
1. Divida o número decimal pelo valor da base b, ou seja, (N)10 /b;
2. Faça c n = resto de
( N )10
;
b
( N )10
)
b
=
;
b
(
3. Faça c n −1
4. Continue calculando os coeficientes até que o quociente seja nulo.
Exemplo de conversão de (23)10 para a base 2.
Dividendo (23)10
Divisor 2 considerado como um decimal
Dividendo Divisor Quociente
Resto índice (i) do coeficiente (ci)
23
2
11
1
5 (- significativo)
11
2
5
1
4
5
2
2
1
3
2
2
1
0
2
1
2
0
1
1 (+ significativo)
Como resultado final (veja também a seta) teríamos então:
(23)10 = (10111)2
Em bases maiores que 10 costuma-se representar os dígitos maiores ou iguais a 10 com letras.
Assim, na base 16 ou hexadecimal, 10 = A, 11 = B, 12 = C, 13 = D, 14 = E e 15 = E. Se você divide
algum número decimal por b o resto necessariamente será menor que b e assim sempre
poderá se representar algum dígito na base b.
O algoritmo para converter a parte fracionária (. c4 c5 ) de um número na base 10 para
qualquer outra base está apresentado a seguir. Vamos assumir que o número esteja
representado por duas partes NI. Nf, respectivamente as partes inteira e fracionária.
4
EA-772 Circuitos Lógicos – Aula 03
Primeiro Semestre de 2016, Professor: Bassani, JWM
1. Multiplico a parte fracionária pela base.
Assim, efetuo (.Nf)10 x b. Se o produto resultante for < 1
então
2. O digito mais significativo da fração será zero; Voltar ao item 1
Se o produto resultante for ≥ 1
3.
O digíto mais significativo será a parte inteira do resultado;
4. Voltar ao item 1.
O algoritmo não especifica a parada, mas isso você vai ver ao trabalhar com os exemplos
dados em aula e nos exercícios.
Exemplos
Converter: (0.625)10 = ( )8
0.625 x 8 = 5.000 0.5
Veja que se você fosse adiante não acrescentaria dígitos significativos.
Converter: (0.23)10 = (0.001110)2
Produtos
Resultado da conversão
0.23 x 2 =0.46
0.0
0.46 x 2 = 0.92
0.00
0.92 x 2 = 1.84
0.001
0.84 x 2 = 1.68
0.0011
0.68 x 2 = 1.36
0.00111
0.36 x 2 = 0.72
0.001110
Com os dois algoritmos podemos então converter um número qualquer da base 10 para
qualquer base.
Exemplo
Converter: (27.68)10 = ( )2
27/2 = 13 resto 1
13/2 = 6 resto 1
6/2 = 3
resto 0
3/2 = 1
resto 1
1/2 = 0
resto 1
5
EA-772 Circuitos Lógicos – Aula 03
Primeiro Semestre de 2016, Professor: Bassani, JWM
Seguindo adiante,
Produtos
0.68 x 2 = 1.36
0.36 x 2 = 0.72
0.72 x 2 = 1.44
0.44 x 2 = 0.88
Resultado da conversão
0.1
0.10
0.101
0.1010
O resultado final fica, então, (27.68)10 = (11011.1010)2
Distração: Conversão da base 2 para bases que são potências de 2
No caso de bases que são potências de 2 as coisas podem ficar mais simples. Nestes casos,
basta agrupar os números binários em grupos de 2n dígitos. Isto facilita converter da base 2
para outras bases.
Base 2 base 8 (23)
Como ilustrado abaixo, marque os grupos de n dígitos antes do ponto binário da direita para a
esquerda e depois do ponto da esquerda para a direita. Agora converta (de cabeça) cada grupo
de n=3 dígitos para a base 8 (é claro que você tem apenas que ler e copiar os dígitos
correspondentes). Lembre-se de ajustar o número de bits para múltiplos de 3 bits.
(1101.10101)2 =
1 1 0 1 . 1 0 1 01
1
5
. 5
base 2 = 001 101.101 010
2 base 8
Avalie, se quiser, cada bloco de 3 dígitos usando o polinômio escrito na base 2 e avaliado na
base 10.
Base 2 -- base 16 (24) n = 4.
(11011.1010)2 = ( )H
=
11011.1010
base 2
1
base hexadecimal (16)
B
A
Se o número for potencia k de 2 ajuste os bits para blocos de tamanho k e aplique a regra. No
caso de truncamento, o número ficaria impreciso. Deve-se lembrar que para se obter a devida
precisão para um número 2k seria necessário considerar pelo menos k bits depois do ponto da
base.
TRIANGULAÇÃO
Como último recurso, se você não tiver alternativa, fique com a regra da triangulação.
Converta da base original para a base 10 (você sabe fazer as contas) e daí da base 10 para a
base desejada, usando os algoritmos e operações na base 10.
6
EA-772 Circuitos Lógicos – Aula 03
Primeiro Semestre de 2016, Professor: Bassani, JWM
Exemplo
Converter:
(16)7 para a ( )3
Converta (16)7 para a base 10. Assim: 1 x 71 + 6 x 70 = (13)10
Agora, converta (13)10 para a base 3. Assim: 13/3 = 4 (resto 1), 4/3 = 1 (resto 1), 1/3 = 0 (resto
1). Ou seja, (13)10 = (111)3
Bibliografia
-Bassani JWM.
Notas de aula – Circuitos Lógicos.
-Veja a lista de referencias indicadas na primeira aula
(Veja no site indicado para a disciplina o material didático e bibliografia)
7
Download