Sistemas de Numeração e Códigos Binários

Transcrição

Sistemas de Numeração e Códigos Binários
1
ELETRÔNICA DIGITAl I
SISTEMAS DE NUMERAÇÃO
INTRODUÇÃO
A base dos sistemas digitais são os circuitos de chaveamento (switching) nos quais o componente
principal é o transistor que, sob o ponto de vista da eletrônica digital funciona como uma chave,
possuindo somente dois estados: aberta ou fechada. Toda a operação dos circuitos digitais está
fundamentada nestes dois estados dos dispositivos, caracterizando desta maneira um sistema
binário. Como consequência, para entender os princípios da eletrônica digital é necessário o
conhecimento do sistema de numeração binário.
REPRESENTAÇÃO DE UM NÚMERO
Em um sistema de numeração de base b qualquer, um número positivo é representado pelo
polinômio:
N(b) = aq-1bq-1 + aq-2bq-2 + ... + a1b1 + a0b0 + a-1b-1 + a-2b-2 + ... + a-pb-p =
q −1
∑a b
i=− p
i
i
Onde:
b = Base (ou raiz) do sistema de numeração (Inteiro >1)
a = Inteiro no intervalo (0 ≤ ai ≤ b-1): são os dígitos do número
p = Número de dígitos da parte fracionária do número
q = Número de dígitos da parte inteira do número.
A sequência de dígitos aq-1aq-2...a1a0, representa a parte inteira do número, enquanto a sequência
de dígitos a-1a-2...a-p, representa a parte fracionária do numero N.
O dígito a-p é o dígito menos significativo e aq-1 é o dígito mais significativo do número N.
Assim, um número decimal pode ser representado através de um polinômio de potências da base
10. Por exemplo, o número decimal 25983,476 pode ser representado pelo polinômio:
25983,476 = 2x104 + 5x103 + 9x102 + 8x101 + 3x100 + 4x10-1 + 7x10-2 + 6x10-3
Essa forma de representação de um número decimal, é conhecida como sistema de numeração
decimal, onde o número 10 representa a base (ou raiz) do sistema.
Ademar Luiz Pastro
UFPR-Departamento de Engenharia Elétrica
2
ELETRÔNICA DIGITAl I
CONVERSÃO DE BASES
Com frequência é necessário converter um número representado em um determinado sistema de
numeração, para o seu equivalente em outro sistema de numeração. Esta operação é denominada
conversão de bases.
Para a conversão de um número de uma base b1 para uma base b2, existem duas técnicas que
podem ser utilizadas:
a) Método do polinômio
Esse método consiste em representar o numero N como um polinômio de potências da base
b1(base de origem) e utilizar a aritmética da base b2 (base de destino) para calcular o valor deste
polinômio.
Por exemplo: Converter para base 10 os números 425,2(8) e 1011,01(2) respectivamente.
Polinômios:
425,2(8) = 4x82 + 2x81 + 5x80 + 2x8-1 = 277,25(10)
1011,01(2) = 1x23 + 0x22 + 1x21 + 1x20 + 0x2-1 + 1x2-2 = 11,25(10)
É importante observar que, em ambas as conversões, as operações aritméticas para o cálculo do
valor do polinômio foram realizadas na base 10 que é a base de destino (b2).
Converter o número 237(8) para a base 5:
237(8) = 2x82 + 3x81 + 7x80 = 1003 + 44 + 12 = 1114(5)
Observe que nesse caso o método de conversão é o mesmo utilizado nas conversões anteriores
porém, considerando que é necessário utilizar a aritmética da base 5 para efetuar as operações, o
que para nós representa uma dificuldade, visto que não estamos habituados a trabalhar com uma
base diferente da base 10.
Portanto, podemos deduzir que esse método de conversão é adequado somente quando a base de
destino for a base 10, pois nessa situação as operações aritméticas são efetuadas no sistema
decimal.
Exercícios:
Efetuar a conversões dos números mostrados abaixo para o sistema decimal.
a) 2041,24(5);
b) 582,76(8);
c) 1101011,1011(2);
d) 10210,201(4)
b) Método das divisões e multiplicações sucessivas
Ademar Luiz Pastro
UFPR-Departamento de Engenharia Elétrica
3
ELETRÔNICA DIGITAl I
Nesse método, é utilizada a aritmética da base b1, que é base de origem. As conversões das
partes inteira e fracionária do número, são efetuadas separadamente.
Seja N(b1) um número inteiro. Como já vimos, sua representação na base b2 é dada pelo
polinômio:
N(b1) = aq-1b2q-1 + aq-2b2q-2 + ... + a1b21 + a0b20
Dividindo ambos os lados da igualdade por b2 teremos:
N(b1)/b2 = aq-1b2q-2 + aq-2b2q-3 + ... + a1 + a0/b2
Fazendo:
aq-1b2q-2 + aq-2b2q-3 + ... + a1 = Q0
N(b1)/b2 = Q0 + a0/b2
Portanto:
a0 = N(b1) - b2Q0
Assim, podemos observar que, o dígito menos significativo do número N(b2) isto é, o dígito a0,
representa o resto da primeira divisão.
O próximo dígito significativo (a1), é obtido dividindo-se o quociente obtido na divisão anterior
(Q0) novamente por b2.
Q0/b2 = aq-1b2q-3 + aq-2b2q-4 + ... + a2 + a1/b2
O resto desta segunda divisão, representa o segundo dígito menos significativo (a1).
A obtenção dos demais dígitos é feita através de divisões sucessivas dos quocientes obtidos, até
que o quociente seja zero.
O número N(b2) é composto pelos restos das divisões efetuadas, lembrando que o resto da
primeira divisão é o dígito menos significativo.
A parte fracionária do número, é representada por:
N(b1) = a-1b2-1 + a-2b2-2 + ... + a-pb2-p
O dígito mais significativo (a-1) pode ser obtido multiplicando o polinômio por b2:
b2.N(b1) = a-1 + a-2b2-1 + ... + a-pb2-p+1
Se o produto obtido nesta multiplicação for menos do que 1, então o dígito a-1 é igual a zero. Se
o produto for maior do que 1, então o dígito a-1 é igual à parte inteira do produto.
O próximo dígito é obtido multiplicando a parte fracionária do produto anterior novamente por
b2 e determinando a parte inteira deste novo produto, e assim sucessivamente.
Ademar Luiz Pastro
UFPR-Departamento de Engenharia Elétrica
4
ELETRÔNICA DIGITAl I
Este processo não necessariamente termina, visto que nem sempre é possível representar a fração
na base b2 com um número finito de dígitos.
Exemplo: converter o número 358,78125(10) para a base 4.
a) Parte inteira (divisões sucessivas):
358 | 4_
2 89 | 4_
1 22 | 4_
2 5 | 4_
1 1 | 4_
1 0
assim:
358(10) = 11212(4)
b) Parte fracionária (multiplicações sucessivas):
0,78125
x 4
3,12500
3 é o primeiro dígito na base 4;
0,12500
x 4
0,50000
0 é o segundo dígito na base 4;
0,50000
x 4
2,00000
2 é o terceiro dígito na base 4;
assim:
Portanto:
0,78125(10) = 0,302(4)
358,78125(10) = 11212,302(4)
Exercícios:
Efetuar as conversões de base indicadas abaixo:
405,1875(10)
371,36(10)
157,0625(10)
103,85(10)
para base 8;
para base 8;
para base 2;
para base 2
c) Método da substituição direta
O método de conversão de bases por substituição direta pode ser utilizado quando quando uma
das bases for potência inteira da outra.
Ademar Luiz Pastro
UFPR-Departamento de Engenharia Elétrica
5
ELETRÔNICA DIGITAl I
Consideremos por exemplo, dois sistemas de numeração de bases b1 = 3 e b2 = 9. Representando
os 9 dígitos do sistema base 9 e seus respectivos valores equivalentes no sistema base 3 temos a
seguinte tabela de conversão:
base 9
0
1
2
3
4
5
6
7
8
base 3
00
01
02
10
11
12
20
21
22
Como é possível observar na tabela, cada dígito do sistema base 9 corresponde à dois dígitos do
sistema base 3. Desta forma, a conversão de um número de uma base para outra pode ser feita
através da simples substituição de um dígito do sistema base 9 por dois dígitos do sistema base 3,
e vice versa.
Exemplo:
Efetuar as conversões:
a)
2705638(9) → base 3
2705638(9) = 02 21 00 12 20 10 22(3)
b)
1021101211020(3) → base 9
01 02 11 01 21 10 20(3) =
1241736(9)
Exercícios:
Efetuar as conversões indicadas abaixo:
a) 10100110,011011(2)
b) 203102,1203(4)
para base 4;
para base 2;
OPERAÇÕES ARITMÉTICAS EM UMA BASE QUALQUER
Podemos efetuar operações aritméticas em um sistema de numeração de base qualquer, da
mesma forma que efetuamos estas operações no sistema decimal, bastando tomar o cuidado de
não esquecer da base com a qual estamos trabalhando.
Vejamos alguns exemplos de soma e subtração em outros sistemas de numeração que não seja o
decimal.
Ademar Luiz Pastro
UFPR-Departamento de Engenharia Elétrica
6
ELETRÔNICA DIGITAl I
Soma:
20412(5)
+34231(5)
---------
27031,452(8)
+16247,574(8)
------------
132011(4)
+201203(4)
---------
520416(7)
-152143(7)
---------
41023,524(6)
-13121,135(6)
-------------
201340(8)
-147356(8)
---------
Subtração:
Exercício:
Efetuar as operações indicadas abaixo:
600487(9)
+158166(9)
---------
21043,324(5)
+10421,132(5)
------------
200340(7)
- 142356(7)
----------
321002(4)
-103213(4)
---------
SISTEMA DE NUMERAÇÃO BINÁRIO
Os sistemas digitais são construídos a partir de dispositivos que possuem dois estados, tal como
o transistor, que pode estar em corte ou conduzindo. Desta forma, o sistema de numeração
binário se adapta perfeitamente às necessidades dos sistemas digitais.
No sistema de numeração binário, a base é 2 e existem somente 2 algarismos(dígitos) para
representar um número qualquer neste sistema: os dígitos utilizados são 0 e 1.
Cada um dos dígitos do sistema binário (0 e 1) é chamado bit , que é uma contração das palavras
binary digit.
Conversões de base envolvendo o sistema binário
a) Binário para decimal
A conversão de um número do sistema binário para o sistema decimal é feita utilizando o
método do polinômio, como já foi visto anteriormente.
Exemplo:
Converter o número 10110110,1011(2) para decimal.
Ademar Luiz Pastro
UFPR-Departamento de Engenharia Elétrica
7
ELETRÔNICA DIGITAl I
Representando o número na forma de polinômio temos:
1x27 + 0x26 +1x25 + 1x24 + 0x23 + 1x22 + 1x21 +1x20 + 1x2-1 + 0x2-2 + 1x2-3 +1x2-4
Calculando o valor do polinômio, temos:
128 + 0 + 32 + 16 + 0 + 4 + 2 + 0 + 0,5 + 0 + 0,125 + 0,0625 = 182,6875
Portanto:
10110110,1011(2) = 182,6875(10)
b) Decimal para binário
A conversão de um número do sistema decimal para o sistema binário é feita utilizando o
método das divisões e multiplicações sucessivas.
Exemplo:
Converter o número 157,359375(10) para binário.
Como já foi visto anteriormente, a parte inteira do número é dividida sucessivamente por 2 até
chegarmos a um quociente zero, e a parte fracionária do mesmo é multiplicada sucessivamente
por 2.
Temos então:
157 | 2
1 78 | 2
0 39 | 2
1 19 | 2
1 9 |2
1 4 |2
0 2 |2
0 1 |2
1 0
Portanto:
0,359375
x2
0,718750
x2
1,437500
x2
0,875000
x2
1,750000
x2
1,500000
x2
1,000000
157,359375(10) = 10011101,010111(2)
Nem sempre a conversão do sistema decimal para o sistema binário pode ser feita de forma
exata. Existem situações em que a parte fracionária do número tem que ser aproximada, como
pode ser observado no exemplo abaixo:
Ademar Luiz Pastro
UFPR-Departamento de Engenharia Elétrica
8
ELETRÔNICA DIGITAl I
Converter o número 141,465(10) para binário
141 | 2
1 70 | 2
0 35 | 2
1 17 | 2
1 8 |2
0 4 |2
0 2 |2
0 1 |2
1 0
0,465
x2
0,930
x2
1,860
x2
1,720
x2
1,440
x2
0,880
x2
1,760
É possível observar no exemplo acima, que nunca vamos chegar a um resultado zero na
multiplicação.
Assim:
141,465(10) = 10001101,011101⋅⋅⋅(2)
Nesta situação, o grau de aproximação vai depender do número de bits que estão disponíveis
para representar o número binário.
SISTEMA DE NUMERAÇÃO HEXADECIMAL
O sistema de numeração hexadecimal é utilizado para simplificar a representação de números
binários. Através do sistema hexadecimal, podemos compactar um conjunto extenso de bits, que
representa o número no sistema binário, em um conjunto menor de dígitos do sistema
hexadecimal.
Características do sistema de numeração hexadecimal:
Base = 16
16 dígitos para representar um número
dígitos 0 a 9, para representar os valores de 0 a 9
dígitos A a F, para representar os valores de 10 a 15.
Se tomarmos um grupo de 4 bits (denominado nibble), podemos formar 16 combinações
diferentes, sendo que, cada uma destas combinações corresponde à um dígito do sistema
hexadecimal.
Portanto, a conversão de um número do sistema binário para o sistema hexadecimal não envolve
nenhuma operação aritmética. Para esta conversão utilizamos o método da substituição direta,
onde cada grupo de 4 bits corresponde a um dígito hexadecimal.
Ademar Luiz Pastro
UFPR-Departamento de Engenharia Elétrica
9
ELETRÔNICA DIGITAl I
A tabela baixo mostra a conversão do sistema binário para o sistema hexadecimal:
Decimal
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Binário
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
Hexadecimal
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
a) Conversão binário ⇒ hexadecimal
Para converter um número do sistema binário para o hexadecimal, basta formar grupos de 4
bits(niblles) da direita para a esquerda, completando com zeros o último grupo à esquerda, se for
necessário. Cada um dos grupos de bits formados, corresponde à um dígito do sistema
hexadecimal.
Exemplos:
a) Converter para hexadecimal o número binário 10011100101100000111101
Separando em grupos:
0100 1110 0101 1000 0011 1101
4 E 5
8
3 D
Portanto,
10011100101100000111101(2) = 4E583D(16)
b) Converter para hexadecimal o número binário 011000000011111110
Separando em grupos:
0001 1000 0000 1111 1110
1
8 0
F
E
Portanto,
011000000011111110(2) = 180FE(16)
Ademar Luiz Pastro
UFPR-Departamento de Engenharia Elétrica
10
ELETRÔNICA DIGITAl I
b) Conversão hexadecimal ⇒ binário
Para converter um número do sistema de numeração hexadecimal para o sistema binário,
simplesmente tomamos cada dígito hexadecimal e representamos através de um grupo de 4 bits.
Exemplos:
a) Converter para binário o número hexadecimal 7A0D
Temos então:
0111 1010 0000 1101
7
A 0 D
b) Converter para binário o número hexadecimal 5F0C7E
O número binário equivalente é:
0101 1111 0000 1100 0111 1110
5
F 0
C 7 E
SISTEMA DE NUMERAÇÃO OCTAL
Características do sistema de numeração octal:
Base = 8
8 dígitos para representar um número
dígitos: 0 a 7
O sistema de numeração octal tem a mesma finalidade do sistema hexadecimal, ou seja,
simplificar a representação de números binários. A diferença é que, ao invés de grupos de 4 bits
como no sistema hexadecimal, temos grupos de 3 bits.
Se tomarmos um grupo de 3 bits, podemos formar 8 combinações diferentes, sendo que, cada
uma destas combinações corresponde à um dígito do sistema octal.
Portanto, da mesma forma que no sistema hexadecimal, a conversão de um número do sistema
binário para o sistema octal não envolve nenhuma operação aritmética. Existe simplesmente uma
correspondência entre cada grupo de 3 bits e um digito octal.
a) Conversão binário ⇒ octal
Para converter um número do sistema binário para o sistema octal, basta formar grupos de 3 bits
da direita para a esquerda, completando com zeros o último grupo à esquerda se for necessário.
À cada um dos grupos formados, temos um dígito do sistema octal.
Exemplos:
a) Converter para octal o número binário 1101111000001110
Ademar Luiz Pastro
UFPR-Departamento de Engenharia Elétrica
11
ELETRÔNICA DIGITAl I
Separando em grupos:
001 101 111 000 001 110
1 5 7 0 1 6
Portanto,
1101111000001110(2) = 157016(8)
b) Converter para hexadecimal o número binário 100111001110101
Separando em grupos:
Assim,
100 111 001 110 101
4 7 1 6 5
100111001110101 (2) = 47165(8)
b) Conversão octal ⇒ binário
Para converter um número do sistema de numeração octal para o sistema binário, simplesmente
tomamos cada dígito octal e representamos através de um grupo de 3 bits.
Exemplos:
a) Converter para binário o número octal 37054
Representando cada dígito pelos 3 bits, temos:
3 7 0 5 4
011 111 000 101 100
Portanto,
37054(8) = 011111000101100(2)
b) Converter para binário o número octal 1730562
Convertendo cada dígito, temos:
1 7 3 0 5 6 2
001 111 011 000 101 110 010
Assim,
1730562(8) = 001111011000101110010(2)
Exercícios:
Efetuar as conversões indicada abaixo:
a) 101111000100001111001(2)
b) 7A0CF5(16)
c) 100010000111001110101(2)
d) 3705631(8)
e) 506214(8)
f) 3F0CA5(16)
Ademar Luiz Pastro
para hexadecimal
para binário
para octal
para binário
para hexadecimal
para octal
UFPR-Departamento de Engenharia Elétrica
12
ELETRÔNICA DIGITAl I
ARITMÉTICA BINÁRIA
As operações aritméticas no sistema binário são feitas exatamente da mesma forma que nos
outros sistemas de numeração, com a diferença que, no sistema binário temos somente os dois
dígitos 0 e 1.
Soma
Como temos somente os dígitos 0 e 1, numa soma de dois números binários existem somente
quatro situações possíveis, que são:
0+0
0+1
1+0
1+1
=0
=1
=1
=0
⇒ “vai um” para a casa seguinte
Exemplos de soma:
01001101
+10011010
10010110
+01011011
10010111
+01110010
Subtração
Da mesma forma que na soma, na subtração de dois números binários temos somente 4 possíveis
situações:
0-0
1-0
1-1
0+1
=0
=1
=0
=1
⇒ “empresta um” da casa anterior
Exemplos de subtração:
11101011
-10010101
10100101
-10011010
10100110
-11000101
Multiplicação
Para entender o processo de multiplicação de dois números binários, vamos inicialmente analisar
a multiplicação de dois números no sistema decimal, uma vez que o procedimento é idêntico
para os dois sistemas.
Tomemos como exemplo a multiplicação:
Ademar Luiz Pastro
UFPR-Departamento de Engenharia Elétrica
13
ELETRÔNICA DIGITAl I
4528 → Multiplicando
x 2735 → Multiplicado
22640
13584
31696
9056
12384080
Como pode-se observar na multiplicação acima, efetuamos a multiplicação de cada dígito do
multiplicador pelo multiplicando, formando produtos parciais. Observe que cada um dos
produtos parciais sofre um deslocamento para a esquerda.
O resultado da multiplicação é a soma de todos os produtos parciais obtidos.
Na multiplicação de dois números binários, como temos somente os dígitos 0 e 1, os produtos
parciais podem ser zero no caso do dígito do multiplicador ser 0, ou o próprio multiplicando no
caso do dígito ser 1.
Exemplo de multiplicação de dois números binários:
101101 → Multiplicando
1011 → Multiplicado
101101
101101
000000
101101
111101111
x
Divisão
Do mesmo modo que a multiplicação, a divisão binária é mais simples que a divisão decimal.
Tomemos como exemplo, a divisão abaixo:
110101101 | 101
1010101
101
00110
101
00111
101
01001
101
100
Como o divisor possui três dígitos (101), perguntamos se o mesmo “cabe” nos três primeiros
dígitos do dividendo (110). Como isto ocorre, o dígito correspondente do quociente é 1, e o
divisor é subtraído dos três primeiros dígitos do dividendo. O restante da divisão segue o mesmo
procedimento da divisão decimal.
Ademar Luiz Pastro
UFPR-Departamento de Engenharia Elétrica
14
ELETRÔNICA DIGITAl I
No exemplo acima, a divisão 110101101÷101 tem como resultado um quociente 1010101 e
um resto 100.
Representação de números negativos através do complemento de 2
O complemento de 2 de um número binário é definido como:
[N]2 = 2n – (N)2
Onde:
(N)2
n
[N]2
: número binário
: número de bits que formam o número
: complemento de 2 do número
Seja por exemplo, o número N = 00101101(2) (representado com 8 bits). O complemento de dois
deste número é:
28 =
100000000
- 00101101
11010011
Uma maneira simples de obter o complemento de dois de um número binário é inverter (ou
negar ou complementar) todos os bits do número e depois somar 1.
Assim, considerando o número visto anteriormente temos:
00101101
invertendo
somando 1
→
→
11010010
+
1
11010011
Uma das formas utilizadas para representar números negativos no sistema binário é através do
complemento de 2. Esta forma de representação é muito utilizada em sistemas digitais para o
tratamento de operações aritméticas envolvendo números com sinal.
Na representaçãode números negativos através de complemento de 2, os números positivos são
representados na sua forma natural, como já foi visto anteriormente. Os números negativos são
representados como complemento de 2 do correspondente número positivo.
Tomemos como exemplo, o número binário 01011010(2) = 90(10).
O complemento de 2 deste número é:
100000000
- 01011010
10100110
Ademar Luiz Pastro
(28 → 8 dígitos)
UFPR-Departamento de Engenharia Elétrica
15
ELETRÔNICA DIGITAl I
Portanto, na forma de representação de números negativos através de complemento de 2, o
número 10100110 representa o valor -90.
Operação de soma utilizando complemento de 2
Analisaremos a seguir a vantagem de se utilizar o complemento de dois, para a realização de
operações aritméticas.
Consideremos uma operação de subtração de dois números binários:
Esta operação pode ser escrita como:
a-b
a - b = a + (-b)
Ou seja, a operação de subtração pode ser substituída por uma operação de soma, onde
utilizamos valor negativo do subtraendo. Portanto, uma operação de subtração de dois números
binários e feita somando o minuendo com o complemento de 2 do subtraendo.
Neste tipo de operação, é importante que seja definido a priori, o número de dígitos que será
utilizado para representar todos os números binários, tendo em vista que na operação de soma o
último dígito normalmente deve ser ignorado.
Como exemplo, vamos efetuar a subtração 106(10) – 39(10) no sistema binário. Para isto, vamos
estabelecer que os números binários serão representados com 8 bits.
106(10) = 01101010(2)
39(10) = 00100111(2)
O complemento de 2 de 39 é: 11011001 (que representa o número -39)
A operação a ser realizada é 106 – 39 = 106 + (-39)
Temos então:
01101010
+11011001
101000011
Como foi definido no início que seriam utilizados 8 bits para representar os números binários , o
bit adicional que apareceu no resultado deve ser desprezado. O resultado da operação é portanto
0100011, equivalente ao valor 67 decimal, que é o resultado esperado para a operação.
Exemplo:
Efetuar a operação 115(10) – 77(10) no sistema binário:
115 = 01110011
77 = 01001101
A operação fica portanto:
Ademar Luiz Pastro
-77 = 10110011
01110011
+10110011
100100110
UFPR-Departamento de Engenharia Elétrica
16
ELETRÔNICA DIGITAl I
O resultado é 00100110 = 38(10) conforme era esperado.
Vejamos agora, a operação 43(10) – 109(10).
43(10) = 00101011(2)
109(10) = 01101101(2)
O complemento de 2 de 01101101, que representa o valor -109 é: 10010011
Temos então a operação:
00101011
+10010011
10111110
Convertendo o resultado da operação (10111110) para decimal, temos o valor 190(10), que não
é o resultado esperado da operação, cujo valor correto deveria ser -66. No entanto, se
tomarmos o complemento de 2 do resultado da operação, temos o valor 01000010, que
corresponde ao valor decimal 66. Observe que, como o resultado da operação é negativo, o
mesmo apareceu na forma de complemento de 2.
Desta forma, temos a regra para a representação de números positivos e negativos no sistema
binário.
a) O primeiro bit(mais significativo) indica o sinal:
0: o número é positivo
1: o número é negativo
b) Se o número for positivo, está representado na sua forma real. Se for negativo, está
representado na forma de complemento de 2.
Com esta forma de representação, a operação de soma é realizada normalmente, sendo que o
resultado, positivo ou negativo, aparecerá naturalmente.
Vejamos alguns exemplos:
a)
95 + (–44)
01011111
+11010100
Eliminando o dígito adicional temos:
b)
00110011 = 51
27 + (–79)
00011011
+10110001
c)
Ademar Luiz Pastro
23 + 85
UFPR-Departamento de Engenharia Elétrica
17
ELETRÔNICA DIGITAl I
00010111
+01010101
d)
(-47) + (–72)
11010001
+10111000
e)
71 + 89
01000111
+01011001
Como podemos observar na última operação (e), o resultado foi -96, quando o valor correto é
+160. Neste caso, ocorreu uma condição de “overflow”, ou seja, o resultado da operação não
cabe nos 8 bits previamente definidos para isto. Fica claro portanto, que existem limites para os
valores que podem ser representados, limites estes que dependem do número de bits que estamos
utilizando para representar o números.
Para o caso de representação de números binários com 8 bits, estes limites são:
01111111 = +127
10000000 = -128
Como regra geral, temos os seguintes limites:
-(2n-1) ≤ N ≤ 2n-1 - 1
onde: n é o número de bits utilizados para representar o número.
CÓDIGOS BINÁRIOS
A representação de valores numéricos através do sistema de numeração binário, é denominado
código binário puro. Em outras situações é necessário, ou desejável, a representação de strings
de caracteres alfanuméricos ou numéricos.
Diversos tipos de códigos foram desenvolvidos com esta finalidade, podendo se enquadrados em
duas principais categorias:
•
•
Códigos numéricos: utilizados para representar valores numéricos;
Códigos não numéricos: utilizados para representar caracteres alfanuméricos
Ademar Luiz Pastro
UFPR-Departamento de Engenharia Elétrica
18
ELETRÔNICA DIGITAl I
Código numéricos
Código BCD
O código BCD-Binary Coded Decimal (Decimal Codificado em Binário) é um código numérico,
utilizado para representar os 10 dígitos decimais, sendo muito utilizado na interface entre
dispositivos digitais. O código BCD nada mais é o do que o próprio código binário, com os
valores limitados ao intervalo de 0 a 9, utilizando portanto 4 bits.
O código BCD é também denominado BCD-8421, pelo fato dos 4 bits que formam o código
terem pesos de 8, 4, 2 e 1 respectivamente.
Na tabela abaixo temos a correspondência entre cada dígito decimal e sua representação no
código BCD.
Decimal
0
1
2
3
4
5
6
7
8
9
BCD
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
Para representar um número decimal no código BCD, representamos cada um dos dígitos através
de um conjunto de 4 bits.
Exemplo: representar o número 590274 no código BCD.
Substituindo cada dígito decimal por um grupo de 4 bits, temos:
0101 1001 0000 0010 0111 0100
5
9
0
2
7
4
Código 3-em-excesso
O código 3-em-excesso é formado adicionando-se 3 ao código BCD(ou binário). Trata-se de um
código não ponderado, visto que não temos como estabelecer um peso para cada um dos 4 bits
que forma o código.
Uma característica do código 3-em-excesso é que, o complemento de 1 de um valor qualquer
neste código, corresponde ao complemento de 9 do dígito decimal correspondente. Por esta
razão, dizemos que o código 3-em-excesso possui a propriedade de auto-complementação.
Na tabela abaixo, temos a correspondência entre os códigos decimal, BCD e 3-em-excesso:
Ademar Luiz Pastro
UFPR-Departamento de Engenharia Elétrica
19
ELETRÔNICA DIGITAl I
Decimal
0
1
2
3
4
5
6
7
8
9
BCD
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
3-em-excesso
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
Código GRAY
O código Gray é um código cíclico, cuja característica é a mudança de somente um bit entre dois
valores consecutivos. Devido a esta característica, o código Gray é muito utilizado em
codificadores(encoders) pois, o fato de existir somente um bit diferente entre valores
consecutivos diminui a probabilidade da ocorrência de erros.
A tabela abaixo mostra a correspondência entre os códigos decimal, binário e Gray de 4 bits:
Decimal
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Binário
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
Gray
0000
0001
0011
0010
0110
0111
0101
0100
1100
1101
1111
1110
1010
1011
1001
1000
Código Johnson
O código Johnson é um código numérico, gerado a partir do contador Johnson. O número de
valores possível depende da quantidade de bits utilizados para representar estes valores. Para
representar os 10 dígitos decimais, são necessários 5 bits no código Johnson.
Na tabela abaixo, está representado o código Johnson de 5 bits:
Decimal
Ademar Luiz Pastro
Johnson
UFPR-Departamento de Engenharia Elétrica
20
ELETRÔNICA DIGITAl I
0
1
2
3
4
5
6
7
8
9
00000
10000
11000
11100
11110
11111
01111
00111
00011
00001
Detecção e correção de erros
Um erro em um dado binário qualquer, significa um valor incorreto em um ou mais bits que
formam este dado. Temos um erro simples quando existe somente um bit incorreto e um erro
múltiplo quando mais de um bit está incorreto.
Erros podem ser causados por falhas de hardware, interferência externa ou outro evento
indesejado.
Os códigos vistos até agora, são compostos de 4 bits, que é o número mínimo necessário para
representar os 10 dígitos decimais.
Estes códigos, embora adequados para a representação dos dígitos decimais, são sensíveis a erros
de qualquer natureza. Na prática, existe sempre a probabilidade da ocorrência de um erro
simples. A probabilidade da ocorrência de um erro múltiplo é mais baixa.
Abordaremos a seguir, a detecção de erros simples.
Códigos de detecção de erros
Em um código de 4 bits, a ocorrência de um erro em um dos bits de um dado pode resultar em
outro dado válido, porém incorreto.
Consideremos como exemplo, os dois dispositivos A e B mostrados na figura abaixo, conectados
através de uma interface, através da qual trafegam dados no formato BCD.
Supondo que, em determinado instante, o dispositivo A enviou através da interface, a seqüência
de bits 0101, que corresponde ao dígito decimal 5 no código BCD.
A
B
0101
0111
Supondo ainda que, devido à uma interferência externa qualquer, o segundo bit (da direita para a
esquerda) da sequência enviada, foi alterado de 0 para 1.
Ademar Luiz Pastro
UFPR-Departamento de Engenharia Elétrica
21
ELETRÔNICA DIGITAl I
Desta forma, o dispositivo B recebe o dado 0111, que corresponde à um valor BCD válido
(digito 7), porém diferente daquele que foi enviado por A.
Assim, A enviou o dígito 5 e B recebeu o dígito 7, e vai tratar este valor como sendo correto,
pois não possui nenhum mecanismo para detectar que ocorreu o erro, pois o código BCD não
tem capacidade para detectar o erro.
É possível tornar o código BCD capaz de detectar um erro simples, adicionando ao mesmo um
bit de paridade, que pode ser par ou ímpar.
•
•
Paridade par
: o número de bits “1”, incluindo o bit de paridade, deve ser par.
Paridade ímpar : o número de bits “1”, incluindo o bit de paridade, deve ser ímpar.
Na tabela abaixo está mostrado o código BCD, acrescido de um bit de paridade:
---------------- BCD ------------------Paridade par
Paridade ímpar
8421 P
8421 P
0000 0
0000 1
0001 1
0001 0
0010 1
0010 0
0011 0
0011 1
0100 1
0100 0
0101 0
0101 1
0110 0
0110 1
0111 1
0111 0
1000 1
1000 0
1001 0
1001 1
Decimal
0
1
2
3
4
5
6
7
8
9
O propósito do bit de paridade é adicionar um bit extra ao código, de modo a fazer com que o
número total de bits “1” seja par ou ímpar, conforme o tipo de paridade paridade desejada. Com
isto, é possível detectar um erro do tipo visto no caso acima.
Considerando o exemplo visto anteriormente e supondo uma paridade par, o dispositivo A envia
o dígito 5que corresponde a 01010, sendo que o dispositivo B por sua vez, recebe o dado 01110.
A
B
01010
01110
Ao verificar a paridade, o dispositivo B, percebe a existência de 3 bits “1”, o que considerando a
paridade par está incorreto.
Código 2-entre-5
Ademar Luiz Pastro
UFPR-Departamento de Engenharia Elétrica
22
ELETRÔNICA DIGITAl I
Outro código numérico utilizado para representar os dígitos decimais e que possui a capacidade
de detectar a ocorrência de um erro simples é o código 2-entre-5, que é um código de 5 bits.
O código 2-entre-5 é formado pelas 10 possíveis combinações de 5 bits sendo que, 2 dos 5 bits
são iguais a “1” e 3 são iguais a “0”.
A detecção de um erro é feita contando-se o número de bits iguais a “1” existentes na seqüência
de bits em questão. Sempre que este número for diferente de 2, existe um erro.
A tabela abaixo mostra a configuração do código 2-entre-5:
Decimal
0
1
2
3
4
5
6
7
8
9
2-entre-5
00011
00101
00110
01001
01010
01100
10001
10010
10100
11000
Distância de um código binário
A distância entre duas palavras(valores) quaisquer, em um código binário, representa o número
de bits que precisam ser alterados para tornar um valor válido em outro valor válido.
Por exemplo, a distância entre as palavras 1010 e 0100 é três, visto que os dois valores possuem
3 bits diferentes.
A distância mínima de um código binário, representa o menor número de bits diferentes entre
dois valores quaisquer. Assim, nos códigos BCD e 3-em-excesso, a distância mínima é um,
enquanto que no código 2-entre-5 a distância mínima é dois.
Para que um código possua a capacidade de detectar um erro simples, é necessário que a
distância mínima seja maior ou igual a dois.
Ademar Luiz Pastro
UFPR-Departamento de Engenharia Elétrica
23
ELETRÔNICA DIGITAl I
Códigos não numéricos
Os código não numéricos são utilizados para representar valores que não são numéricos. Por
exemplo, um computador tem a capacidade de armazenar e trabalhar tanto com dados numéricos
como com dados alfanuméricos. Para que isto seja possível, é necessária a utilização de um
código capaz de representar os dados alfanuméricos.
Código ASCII
O código ASCII (American Standard Code for Information Interchange) é um código não
numérico, amplamente utilizado na indústria de computadores. É um código utilizado para
representar um conjunto de caracteres alfanuméricos, através de combinações de bits pré
definida.
TABELA ASCII (7 bits)
ASCII – American Standard Code for Information Interchange
Dec Hex Caracter
0 00
NUL
1 01
SOH
2 02
STX
3 03
ETX
4 04
EOT
5 05
ENQ
6 06
ACK
7 07
BEL
8 08
BS
9 09
HT
10 0A
LF
11 0B
VT
12 0C
FF
13 0D
CR
14 0E
SO
15 0F
LF
16 10
DLE
17 11
DC1
18 12
DC2
19 13
DC3
20 14
DC4
21 15
NAK
22 16
SYN
23 17
ETB
24 18
CAN
25 19
EM
26 1A
SUB
27 1B
ESC
28 1C
FS
29 1D
GS
30 1E
RS
31 1F
US
Ademar Luiz Pastro
Dec Hex Caracter
32 20
SP
33 21
!
34 22
“
35 23
#
36 24
$
37 25
%
38 26
&
39 27
'
40 28
(
41 29
)
42 2A
*
43 2B
+
44 2C
,
45 2D
46 2E
.
47 2F
/
48 30
0
49 31
1
50 32
2
51 33
3
52 34
4
53 35
5
54 36
6
55 37
7
56 38
8
57 39
9
58 3A
:
59 3B
;
60 3C
<
61 3D
=
62 3E
>
63 3F
?
Dec Hex Caracter
64 40
@
65 41
A
66 42
B
67 43
C
68 44
D
69 45
E
70 46
F
71 47
G
72 48
H
73 49
I
74 4A
J
75 4B
K
76 4C
L
77 4D
M
78 4E
N
79 4F
O
80 50
P
81 51
Q
82 52
R
83 53
S
84 54
T
85 55
U
86 56
V
87 57
W
88 58
X
89 59
Y
90 5A
Z
91 5B
[
92 5C
\
93 5D
]
94 5E
^
95 5F
_
Dec Hex Caracter
96 60
`
97 61
a
98 62
b
99 63
c
100 64
d
101 65
e
102 66
f
103 67
g
104 68
h
105 69
i
106 6A
j
107 6B
k
108 6C
l
109 6D
m
110 6E
n
111 6F
o
112 70
p
113 71
q
114 72
r
115 73
s
116 74
t
117 75
u
118 76
v
119 77
w
120 78
x
121 79
y
122 7A
z
123 7B
{
124 7C
|
125 7D
}
126 7E
~
127 7F
DEL
UFPR-Departamento de Engenharia Elétrica
24
ELETRÔNICA DIGITAl I
TABELA ASCII EXTENDIDA
Código EBCDIC
O código EBCDIC – Extended Binary Coded Decimal Interchange Code, foi desenvolvido
pela IBM no início da década de 60 sendo utilizado em computadores de grande
porte(mainframes).
É um código de 8 bits, onde cada caracter é representado através uma combinação específica
destes 8 bits.
Na tabela abaixo, temos a representação do código EBCDIC.
Ademar Luiz Pastro
UFPR-Departamento de Engenharia Elétrica
25
ELETRÔNICA DIGITAl I
Código EBCDIC
Ademar Luiz Pastro
UFPR-Departamento de Engenharia Elétrica

Documentos relacionados

Sistema Binário

Sistema Binário ocupa. Uma posição à esquerda da vírgula representa uma potência positiva e à direita uma potência negativa. A soma de cada multiplicação de cada dígito binário pelo valor das potências resulta no ...

Leia mais