Conteudos - rmdevolop

Propaganda
Sistemas Digitais – Curso Profissional de Eletrónica, Automação e Comando
2. Sistemas de numeração
Neste capitulo vai-se estudar vários sistemas de representação numeração e os
quais se designam por sistemas de numeração. Na tabela x apresenta-se os diversos
sistemas numéricos que se irão focar.
Todo o sistema numérico pressupõe uma base essa base define o número de
algarismos ou dígitos.
Sistema
Decimal
Binário
Octal
Hexadecimal
Tabela 17- Sistemas de numeração
Base
Dígitos
10
0, 1, 2, 3, 4, 5, 6, 7, 8, 9
2
0, 1
8
0, 1, 2, 3, 4, 5, 6, 7
16
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
2.1. Generalidades
Um número numa determinada base é de uma forma genérica composto por 2
partes a parte inteira e a parte fracionaria, em todo e qualquer número tem-se sempre um
digito mais significativo (MSD) que corresponde ao digito mais à esquerda e um digito
menos significativo (LSD) que corresponde ao digito mais à direita como se pode ver na
figura 16 que se segue a qual representa um número N numa determinada base r.
Figura 16 - Representação de um número.
Qualquer número N, numa determinada base r pode-se decompor num
polinómio de potências de base r. Para se perceber melhor veja-se a expressão seguinte:
… , … ⋯ ⋯ (Equação 42)
A expressão converte qualquer valor numa determinada base para a base 10,
onde cada digito (dn...d-j) tem um valor numérico e um valor posicional (rn...r-j).
Pagina | 44
Rogério Monteiro
Sistemas Digitais – Curso Profissional de Eletrónica, Automação e Comando
2.2. Sistema decimal
Este é o sistema de numeração que normalmente se utiliza na vida.
No sistema decimal um número pode ser decomposto em potências de 10, ou
seja r será igual a 10 veja-se o exemplo seguinte:
1485,53 1 × 103 4 × 102 8 × 101 5 × 100 5 × 10−1 3 × 10−2
2.3. Sistema binário
Este sistema é o mais utilizado em sistemas digitais.
No sistema binário um número pode ser decomposto em potências de dois e no
qual apenas se utilizam dois algarismos (0 e 1). Para uma melhor compreensão veja-se a
tabela 18.
Pesos
Potências
16
24
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
Tabela 18 – Sistema binário conversão para decimal
Binário
8
4
2
1
23
22
21
20
0
0
0
0
0
0
0
1
0
0
1
0
0
0
1
1
0
1
0
0
0
1
0
1
0
1
1
0
0
1
1
1
1
0
0
0
1
0
0
1
1
0
1
0
1
0
1
1
1
1
0
0
1
1
0
1
1
1
1
0
1
1
1
1
0
0
0
0
Decimal
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Para se ver melhor vai-se utilizar um outro exemplo considerando o seguinte
número 11101 em binário e decompondo-o em potências tem-se:
11101 1 × 2 1 × 2 1 × 2 0 × 2 1 × 2 29
2.4. Sistema octal
O sistema octal não é muito utilizado mas por vezes é útil. Um número na base
oito pode ser decomposto em potências de oito. Veja-se o exemplo seguinte:
56433,12 5 × 84 6 × 83 4 × 82 3 × 81 3 × 80 1 × 8−1 2 × 8−2 23835,15625
2.5. Sistema hexadecimal
O sistema hexadecimal é um sistema bastante importante pois normalmente é
neste sistema que se faz o mapeamento de memória (será abordado noutro contexto) em
Pagina | 45
Rogério Monteiro
Sistemas Digitais – Curso Profissional de Eletrónica, Automação e Comando
sistemas digitais. Um número em hexadecimal pode ser decomposto em potências de
dezasseis. Veja-se o exemplo seguinte:
71!, 25" 13 × 16 7 × 16 1 × 16 10 × 16 2 × 16
5 × 16
55066,1445
2.6. Conversão de decimal para outros sistemas
Do ponto 2.3 ao ponto 2.5 viu-se como converter um número em diferentes
bases para a base 10 agora vai-se analisar como converter da base 10 para outras bases.
2.6.1. Conversão de decimal para binário
Para se converter um número em decimal para binário tem de se dividir este nas
duas partes que o constituem, isto é, na sua parte inteira e na sua parte fracionária e
converter a parte inteira e a parte fracionaria separadamente.
Para se converter a parte inteira usa-se o método das divisões sucessivas o qual
se explica na tabela 19.
Para se converter a parte fracionaria usa-se o método das multiplicações
sucessivas o qual se explica na tabela 20.
Para uma melhor compressão vai-se utilizar um exemplo suponha-se que se quer
converter o número 143,75 de decimal para binário, primeiro separa-se a parte inteira da
parte fracionária ficando-se com os números 143 e 0,75.
Primeiro ira-se converter a parte inteira dividindo-a sucessivamente por 2 até
que o cociente seja 1, sendo este o dígito mais significativo do número em binário,
verificando se o resto da divisão é um ou zero em todas as divisões anteriores, sendo o
primeiro resto obtido o dígito menos significativo do número em binário, veja-se a
tabela 19.
Para converter a parte fracionária terá de se ir multiplicando sucessivamente por
2 até que o resultado seja zero ou se atinja uma precisão suficiente verificando-se se a
parte inteira do resultado de cada multiplicação é um ou zero, caso seja um elimina-se a
parte inteira para a próxima multiplicação, veja-se a tabela 20.
Das tabelas podemos retirar o número em binário correspondente a 143,75 que é
10001111,112.
Pagina | 46
Rogério Monteiro
Sistemas Digitais – Curso Profissional de Eletrónica, Automação e Comando
143
03
1
Resto 1
LSD
2
71
11
1
Resto 1
1
1
1
0
Tabela 19 – Conversão de decimal para binário da parte inteira
Primeira divisão
2
Segunda divisão
35
2
Terceira divisão
15
17
2
Quarta divisão
1
1
8
2
Quinta divisão
Resto 1
0
4
2
Sexta divisão
Resto 1
0
2
2
Sétima divisão
Resto 0
0
1
Resultado
Resto 0
Resto 0
Resut 1
MSD
1
1
0
0
0
1
O valor terá de se ler da direita para a esquerda
0
0
1
1
1
1
Tabela 20– Conversão de decimal para binário da parte fracionária
1,5
MSD
1
0
LSD
1
1
0
1*2-1
1*2-2
0,75
0,75*2
0,5*2
0,0*2
Resultado
Decimal
De notar que em certas situações não se consegue obter o valor da parte
fracionaria exato.
2.6.2. Conversão de decimal para octal
O processo de conversão é o mesmo apenas passamos a efetuar divisões
sucessivas por oito para a parte inteira e multiplicações sucessivas para a parte
fracionária. Veja-se as tabelas 21 e 22 onde se faz a conversão do valor 1435,75 de
decimal para octal.
Das tabelas podemos retirar o número em octal correspondente a 1435,75 que é
2637,68.
1435
63
75
3
Resto 3
LSD
8
179
019
3
Tabela 21 – Conversão de decimal para octal da parte inteira
Primeira divisão
8
Segunda divisão
22
8
Terceira divisão
6
2
Resultado
Resto 3
Resto 6
Res 2
MSD
3
3
6
2
6
3
0,75*8
0,0*8
Resultado
Decimal
2
O valor terá de se ler da direita para a esquerda
3
Tabela 22 – Conversão de decimal para octal da parte fracionária
6
MSD
0
LSD
6
0
6*8-1
0*2-2
0,75
Pagina | 47
Rogério Monteiro
Sistemas Digitais – Curso Profissional de Eletrónica, Automação e Comando
2.6.3. Conversão de decimal para hexadecimal
O processo de conversão é o mesmo apenas passamos a efetuar divisões
sucessivas por dezasseis para a parte inteira e multiplicações sucessivas para a parte
fracionária. Veja-se as tabelas 23 e 24 onde se faz a conversão do valor 6490,75 de
decimal para hexadecimal.
Das tabelas podemos retirar o número em hexadecimal correspondente a
6490,75 que é 195A,C016.
Tabela 23 – Conversão de decimal para hexadecimal da parte inteira
Primeira divisão
16
Segunda divisão
25
16
Terceira divisão
9
1
Resultado
6490
0090
10
Resto
10
A
LSD
16
405
085
05
Resto 5
A
5
9
1
9
5
Resto 9
0,75*16
0,0*16
Resultado
Decimal
Resut 1
MSD
1
O valor terá de se ler da direita para a esquerda
A
Tabela 24 – Conversão de decimal para hexadecimal da parte fracionária
12=C
MSD
0
LSD
C
0
12*16-1
0*16-2
0,75
2.7. Conversão de binário para octal e vice-versa
Até aqui tem-se considerado que um número é composto por dígitos
independentemente da sua base a partir de agora vai-se considerar que sempre que um
numero esteja na base dois, ou seja, em binário os seus dígitos serão bits.
Analisando-se a relação entre bases verifica-se que a relação entre a base 8 do
sistema octal com a base 2 do sistema binário é de 23, ou seja, 8= 23 através desta
relação verifica-se que para representar os oito dígitos que compõem a base do sistema
octal precisa-se de 3 bits.
Assim para se converter um número de binário para octal basta fazer-se grupos
de 3 bits e converte-los para decimal. Para a parte inteira tem de se começar a contar
para a esquerda a partir da vírgula. Para a parte fracionaria tem de se começar a contar
para a direita a partir da vírgula. Veja-se um exemplo para melhor se perceber o
processo convertendo o número 111110,001110
Pagina | 48
Rogério Monteiro
Sistemas Digitais – Curso Profissional de Eletrónica, Automação e Comando
Binário
Grupos
Sentido dos grupos
Octal
Tabela 25 – Conversão de binário para octal ou de octal para binário
1
1
1
1
1
0
,
0
0
1
1
111
110
001
←
→
7
6
,
1
1
110
0
6
2.8. Conversão de binário para hexadecimal e vice-versa
Para se converter de binário para hexadecimal o processo é idêntico à conversão
de binário para octal tem de se ter em consideração a relação de bases de hexadecimal e
binário a qual é 16=24, ou seja, precisamos de 4 bits para representar os dezasseis
números o que equivale a se efetuar grupos de 4 bits. Veja-se um exemplo para melhor
se perceber o processo convertendo o número 111110,001110.
Tabela 26 – Conversão de binário para hexadecimal ou de hexadecimal para binário
Binário
1
1
1
1
1
0
,
0
0
1
1
Grupos
0011
1110
0011
Sentido dos grupos
←
→
Hexadecimal
3
(14) E
,
3
1
0
1000
8
2.9. Conversão de octal para hexadecimal e vice-versa
Para se converter uma das duas bases passa-se uma delas para binário e
converte-se de seguida para a base pretendida ou seja, de octal para hexadecimal
converte-se de octal para binário e depois de binário para hexadecimal.
2.10. Operações aritméticas em binário
Já se viu como converter números de umas bases para outras agora está na altura
de se estudar como efetuar operações aritméticas em bases diferentes da base 10, deste
modo nesta secção e até a secção 2.11 vai-se estudar como efectuar operações
aritméticas em binário, octal e hexadecimal.
2.10.1. Soma em binário
Vai-se estudar como se fazem somas em binário para tal usa-se a tabuada da
soma em binário a qual esta expressa na tabela 27.
Operando 1
0
0
1
1
Tabela 27 – Tabuada da soma em binário
Operando 2
Resultado
Transporte ou carry (E vai)
0
0
0
1
1
0
0
1
0
1
0
1
Operador
+
Exemplo somar o número 11001 ao número 1000.
E vai
Op1
Op2
Resultado
1
0
0
1
1
1
0
0
0
1
1
0
0
0
0
0
0
0
0
0
0
1
0
1
Decimal
25
8
33
Pagina | 49
Rogério Monteiro
Sistemas Digitais – Curso Profissional de Eletrónica, Automação e Comando
2.10.2. Subtração em binário
Vai-se estudar como se fazem subtrações em binário para tal usa-se a tabuada da
soma em binário a qual esta expressa na tabela 27.
Operando 1
0
0
1
1
Tabela 28 – Tabuada da subtração em binário
Operando 2
Resultado
Transporte ou borrow (E vai)
0
0
0
1
1
1
0
1
0
1
0
0
Operador
-
Exemplo subtrair ao número 1010 o número 101.
E vai
Op1
Op2
Resultado
0
10
0
0
1
0
1
1
0
10
0
0
1
0
1
1
Decimal
10
5
5
2.10.3. Multiplicação em binário
Vai-se estudar como se fazem multiplicações em binário para tal usa-se a
tabuada da soma em binário a qual esta expressa na tabela 29.
Operando 1
0
0
1
1
Operador
*
Tabela 29 – Tabuada da multiplicação em binário
Operando 2
Resultado
Transporte ou carry (E vai)
0
0
0
1
0
0
0
0
0
1
1
0
2.11. Operações aritméticas em octal
Nesta secção vai-se ver como efetuar as operações em octal, ou seja, como
somar, subtrair e multiplicar na base oito.
2.11.1. Soma em octal
Soma-se, digito a digito como em decimal, no caso de o resultado ser maior ou
igual a 8 subtrai-se 8 e vai 1.
78+38=10 10 > 8 então 10-8=2 e vai 1 então 78+38=128
168+58=238
Tabela 30 - Soma em octal
1
+
2
6
5
3
6+5=11>8
11-8=3
238
E vai 1
2.11.2. Subtração em octal
Quando o algarismo de cima é inferior ao de baixo adiciona-se 8 ao algarismo de
cima e subtrai-se como em decimal obtendo-se o resultado da subtração e vai 1.
3258-568 = 2478
Pagina | 50
Rogério Monteiro
Sistemas Digitais – Curso Profissional de Eletrónica, Automação e Comando
3
2
Tabela 31 – Subtração em octal
5
5+8=13
6
2+8=10
7
3-1=2
2
5
4
13-6=7
10-5-1=4
E vai 1
E vai 1
2478
2.11.3. Multiplicação em octal
Todo o processo é idêntico ao caso de decimal, contudo tem de se converter os
resultados das multiplicações parciais para octal.
568 X 148=10508
x
2
+
0+1=1
1
5
7+1=8
8-8=0
E vai 1
0
Tabela 32 - Multiplicação em octal
5
6
1
4
3
0
4*6=24
4
+
4*5=20
6
+
6*1=6
+
+
5*1=5
13
0
13-8=5
E vai 1
5
0
308
248
68
58
2.12. Operações aritméticas em hexadecimal
Nesta secção vai-se ver como efetuar as operações em hexadecimal, ou seja,
como somar, subtrair e multiplicar na base dezasseis.
2.12.1. Soma em hexadecimal
Soma-se, digito a digito como em decimal, no caso de o resultado ser maior ou
igual a 16 subtrai-se 16 e vai 1.
2.12.2. Subtração em hexadecimal
Quando o algarismo de cima é inferior ao de baixo adiciona-se 16 ao algarismo
de cima e subtrai-se como em decimal obtendo-se o resultado da subtração e vai 1.
2.12.3. Multiplicação em hexadecimal
Todo o processo é idêntico ao caso de decimal, contudo tem de se converter os
resultados das multiplicações parciais para hexadecimal.
2.12.4. Representação de números inteiros com sinal
Até este momento viu-se apenas formas de representação de números positivos,
contudo têm-se também números negativos assim surge a necessidade de os
representarmos, assim de seguida ira-se analisar algumas formas de representação
numérica de números.
Pagina | 51
Rogério Monteiro
Sistemas Digitais – Curso Profissional de Eletrónica, Automação e Comando
2.12.4.1. Código de sinal e valor absoluto
Uma solução encontrada para se representar números negativos foi a de juntar
ao número em binário um bit à esquerda do bit mais significativo designado por bit de
sinal, assim para se representar o número positivo considera-se que o bit de sinal é 0 e
para se representar um número negativo considera-se 1.
Na tabela 33 apresenta-se os números em binário com 3 bits e um de sinal e da
qual se podem retirar as seguintes conclusões:
1. O zero tem duas representações distintas 0000 (0 em decimal) e 1000 (–0).
2. O maior valor absoluto que pode ser representado é 24-1-1=7 para o caso dos
valores representados na tabela, e generalizando-se para um número
representado por N bits ira-se ter 2N-1-1.
Esta forma de representação designa-se por código de sinal e valor absoluto e
para o qual é difícil se desenvolverem circuitos de operações nomeadamente a adição e
subtração de valores para alem do já referido problema respeitante à dupla
representação do “0” para melhor se perceber a problemática de efetuar operações
considere-se as adições seguintes -12 + 8 e 12 +8.
Para se efetuar as operações será preciso tratar o bit de sinal de modo
independente assim para a primeira operação vai-se ter o seguinte:
+
Bit sinal
1
0
1
Bit 3
1
1
0
Bit 2
1
0
1
Bit 1
0
0
0
Bit 0
0
0
0
Decimal
-12
8
-4
Bit 1
0
0
0
Bit 0
0
0
0
Decimal
12
8
4
Para a segunda operação obtém-se o seguinte:
+
Bit sinal
0
0
0
Bit 3
1
1
0
Bit 2
1
0
1
Analisando as duas situações deduz-se que ao se tratar de forma independente o
primeiro valor está correto mas o segundo está errado sendo deste modo muito difícil
conceber circuitos que prevejam todas as situações idênticas à anterior.
Pagina | 52
Rogério Monteiro
Sistemas Digitais – Curso Profissional de Eletrónica, Automação e Comando
Tabela 33- Código de sinal e valor absoluto
Bit 2
Bit 1
Bit 0
1
1
1
1
1
0
1
0
1
1
0
0
0
1
1
0
1
0
0
0
1
0
0
0
0
0
0
0
0
1
0
1
0
0
1
1
1
0
0
1
0
1
1
1
0
1
1
1
Bit sinal
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
Decimal
7
6
5
4
3
2
1
0
-0
-1
-2
-3
-4
-5
-6
-7
2.12.4.2. Código complemento de um
Uma das vantagens deste método é que o sinal ao contrário do caso do código de
sinal e valor absoluto, formando-se os números negativos a partir do complemento dos
números positivos, ou seja da sua negação, para uma melhor compreensão veja-se a
tabela 34, a qual representa os números compostos por 4 bits e o seu respetivo valor em
decimal.
Bit sinal
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
Bit 2
1
1
1
1
0
0
0
0
1
1
1
1
0
0
0
0
Tabela 34 – Código complemento de um
Bit 1
Bit 0
1
1
1
0
0
1
0
0
1
1
1
0
0
1
0
0
1
1
1
0
0
1
0
0
1
1
1
0
0
1
0
0
Decimal
7
6
5
4
3
2
1
0
-0
-1
-2
-3
-4
-5
-6
-7
Como se pode observar na tabela com 4 bits pode-se representar 24 = 16
números, o maior valor absoluto é dado por 24-1-1=7, de uma forma genérica tem-se que
o maior valor absoluto representável é 2N-1-1 em que N é o numero de bits, de notar
ainda que se continua a ter uma dupla representação para o zero mas em termos de
operações matemáticas é mais simples realiza-las pois o sinal deixa de ser tratado
separadamente, veja-se a soma seguinte 106 + (-2).
Pagina | 53
Rogério Monteiro
Sistemas Digitais – Curso Profissional de Eletrónica, Automação e Comando
+
1
0
1
0
1
1
1
1
1
1
0
1
1
0
1
0
1
1
0
0
1
1
1
0
1
0
1
0
0
+
0
1
1
1
0
106
-2
104
Da operação verifica-se a necessidade de efetuar o transporte do e vai 1 e somalo ao resultado não sendo muito pratico mas aceitável em termos de realização de
circuitos que elaboram operações.
2.12.4.3. Código complemento de dois
No código de complemento de um verifica-se que se tem ainda uma dupla
representação do zero para se eliminar tal ambiguidade surgiu o código complemento de
dois o qual é formado a partir do código complemento de um somando-se um no caso
da representação de números negativos. Para além da vantagem de não se ter a dupla
representação do zero as operações aritméticas se tornam ainda mais simples como se
irá ver mais à frente.
Neste sistema podem-se representar 2N números diferentes em que N é o número
de bits o maior valor absoluto positivo será 2N-1-1 e o maior valor absoluto negativo será
2N-1 como se pode observar na tabela 35 onde se representa a representação em
complemento de dois para o caso de 4 bits.
Bit sinal
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
Bit 2
1
1
1
1
0
0
0
0
1
1
1
1
0
0
0
0
Tabela 35- Código complemento de 2
Bit 1
Bit 0
1
1
1
0
0
1
0
0
1
1
1
0
0
1
0
0
1
1
1
0
0
1
0
0
1
1
1
0
0
1
0
0
Decimal
7
6
5
4
3
2
1
0
-1
-2
-3
-4
-5
-6
-7
-8
Para se ver como efetuar operações em complemento de dois analise-se a
operação 106 + (-2).
+
1
0
1
1
0
1
0
1
0
1
1
1
1
1
1
1
0
0
1
1
0
1
0
0
0
O valor que vai simplesmente se despreza quando se chega ao fim da operação
106
-2
104
Pagina | 54
Rogério Monteiro
Sistemas Digitais – Curso Profissional de Eletrónica, Automação e Comando
Como se pode verificar pela operação realizada anteriormente é bem mais
simples de realizar assim como de desenvolver circuitos que a implementem quando
comparado com o caso do código complemento de um.
2.12.5. Comparação das formas de representação de inteiros com sinal
Para se comparar as diversas formas de representação de números inteiros com
sinal vai-se efetuar a mesma operação com os três formas de representação e ver as
diferenças entre elas.
Decimal
7
+
-6
1
Tabela 36 – operações com sinal nas três formas de representação
Binário sinal valor abs.
Complemento de um
Complemento de dois
0
1
1
1
0
1
1
1
0
1
1
1
+
1
1
1
0
+
1
0
0
1
+
1
0
1
0
1
1
1
0
1
1
0
0
0
0
1
0
0
0
1
1 Valor errado
Transporte e soma
1
Despreza-se o 1
Sinal tratamento sep.
0
0
0
1
O que fazer?? Com 1
A partir da tabela 36 pode-se tirar as seguintes conclusões:
1. Na representação com o código de sinal valor absoluto o resultado das
operações pode ser errado e quando vai um da operação não se sabe o
que fazer, o que provoca com que os circuitos sejam difíceis de conceber
e sem garantias de um resultado correto.
2. Na representação com o código complemento de um verifica-se que o
resultado é o correto mas quando vai um tem de se transportar e somar
para se obter o resultado, o que provoca com que os circuitos sejam
difíceis de conceber mas com garantias de um resultado correto.
3. Na representação com o código complemento de dois verifica-se que o
resultado é o correto e quando vai um apenas se despreza esse bit, o que
provoca com que os circuitos sejam simples de conceber, sendo esse o
motivo pelo qual é a representação de inteiros com sinal mais utilizada.
2.12.6. Operações matemáticas em complemento de dois
Como o complemento de dois é o sistema mais utilizado por esse motivo ira-se
analisar como efetuar as operações aritméticas, mais propriamente como somar e
subtrair e assim como ver o conceito de Overflow o qual é de extrema importância em
sistemas digitais.
Pagina | 55
Rogério Monteiro
Sistemas Digitais – Curso Profissional de Eletrónica, Automação e Comando
2.12.6.1. Soma em complemento de dois
A soma em complemento de dois é realizada do mesmo modo que a soma em
binário natural mas contudo quando vai um nos últimos bits a se adicionarem desprezase esse bit, de seguida vai-se analisar as situações possíveis.
Soma de dois números positivos de 4 bits
+
Bit 3
0
0
0
Sinal
Bit 2
1
0
1
Bit 1
0
1
1
Bit 0
1
0
1
Decimal
5
2
7
Soma de dois números negativos de 4 bits
+
1
Desprezado
Bit 3
1
1
1
Sinal
Bit 2
0
1
0
1
Bit 1
1
1
0
1
Bit 0
0
1
1
0
Decimal
-6
-1
-7
6+1
Soma de um número negativo e um positivo de 4 bits
+
1
Desprezado
Bit 3
1
0
0
Sinal
Bit 2
0
1
0
Bit 1
1
1
0
Bit 0
0
0
0
Decimal
-6
6
0
2.12.6.2. Subtração em complemento de dois
Para se subtrair em complemento de dois mudamos o sinal do subtrativo (Valor
que se quer subtrair) e adicionam-se os valores escritos com o mesmo número de bits,
de seguida vai-se dar um exemplo.
Exemplo:
9-4=5 → 01001c2-00100c2=00101c2
Passos
Passo 1
Passo 2
+
+
1
Sai
Bit 4
0
1
0
1
0
0
Sinal
Bit 3
0
1
0
1
1
0
Bit 2
1
0
0
1
0
1
Bit 1
0
1
0
0
0
0
Bit 0
0
1
1
0
1
1
Descrição
Subtrativo
Complemento de um
Mais 1
Complemento de dois
Complemento de dois
Complemento de dois
Resultado
Decimal
4
-4
9
5
2.12.6.3. Noção de Overflow
O overflow dá-se quando o resultado de uma determinada operação entre dois
números necessita de mais bits para se representar, em complemento de dois é
facilmente detetável pela análise dos sinais dos operandos e do resultado da operação,
para melhor compreensão veja-se os exemplos que se seguem.
Pagina | 56
Rogério Monteiro
Sistemas Digitais – Curso Profissional de Eletrónica, Automação e Comando
Exemplo 1:
+
Bit 4
0
0
1
Sinal errado
Bit 3
1
1
0
Bit 2
Bit 1
0
0
0
0
0
0
Grandeza errada
Bit 0
1
0
1
Decimal
9
8
17
Analisando-se a operação verifica-se que o valor da grandeza está errado pois
não corresponde ao valor 17, por outro lado o sinal também está errado pois a soma de
dois números positivos será sempre um número positivo e neste caso o resultado é um
número negativo.
Exemplo 2:
Bit 4
1
0
1
Passar 8 a -8
+
1
Sai fora
1
1
0
Sinal errado
Bit 3
0
1
0
+
1
0
1
Bit 2
1
0
1
0
1
1
Bit 1
1
0
1
Bit 0
1
0
1
1
0
0
1
1
1
1
Grandeza errada
Decimal
-9
8
-8
-9
-17
Analisando-se a operação verifica-se que o valor da grandeza está errado pois
não corresponde ao valor 17, por outro lado o sinal também está errado pois a subtração
de um número negativo com um número soma positivo será sempre um número
negativo e neste caso o resultado é um número positivo.
Ao se canalizar as duas situações verifica-se que em ambos os casos o sinal do
resultado está errado assim em complemento de dois para se detetar um overflow basta
analisar os sinais dos operandos e do resultado para se verificar uma situação de
overflow.
2.13. Códigos
Em sistemas digitais tem-se a necessidade de representar números contudo estes
apenas podem ser representados em binário assim terá de se utilizar códigos para
representar números de modo a que as pessoas os entendam facilmente assim nesta
perspetiva desenvolveram-se códigos.
Contudo não se utilizam apenas números na vida quotidiana, utilizam-se também
letras e símbolos assim em sistemas digitais tem-se dois tipos distintos de códigos os
códigos numéricos que servem para se representar números e os códigos alfanuméricos
os quais servem para representar números, letras e símbolos.
Para além da necessidade das pessoas entenderem facilmente a representação
de números e letras existem outros motivos para se utilizarem códigos que se prendem
Pagina | 57
Rogério Monteiro
Sistemas Digitais – Curso Profissional de Eletrónica, Automação e Comando
com o armazenamento da informação assim como outras situações pertinentes como a
deteção de erros em transmissão de informação ou a sua deteção e correção.
2.13.1. Códigos numéricos
Os códigos numéricos servem para se representar números um deles é o código
binário puro o qual já se falou assim como o código de sinal e valor absoluto, o código
complemento para um e o código complemento para dois, destes códigos o mais
importante é o código complemento para dois pois é o que nos possibilita representar
números inteiros com sinal de uma forma simples assim como efetuar operações
matemáticas de uma forma mais simples.
Para alem dos códigos numéricos já descritos atrás existem outros códigos
numéricos e os quais se vão a passar a descrever assim como quis são as suas
aplicações.
2.13.1.1. Código NBCD
O código NBCD (Natural Binary Coded Decimal) é um código que utiliza
quatro bits para representar os nove dígitos em decimal, com este código pode-se
representa números inteiros ou fracionários positivos, assim como efetuar operações
matemáticas. A metodologia que se utiliza para a representação numérica é converter
cada um dos dígitos em decimal para o seu correspondente em binário natural com 4
bits.
Para se converter um número em NBCD para binário efetuam-se grupos de 4
bits confessando a formar-se os grupos da parte inteira (número atrás da virgula) da
direita para a esquerda e da parte fracionária (número à frente da virgula) efetuam-se
grupos de 4 bits mas da esquerda para a direita.
Na tabela x apresenta-se a representação em binário de cada um dos nove dígitos
em binário e o seu valor em decimal, na tabela x apresenta-se como converter um
número em NBCD para decimal.
Pagina | 58
Rogério Monteiro
Sistemas Digitais – Curso Profissional de Eletrónica, Automação e Comando
Bit 1
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
NBCD
Decimal
Bit 2
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
0
0
1
2
Tabela 37 – Código NBCD
NBCD
Bit 1
Bit 0
0
0
0
1
1
0
1
1
0
0
0
1
1
0
1
1
0
0
0
1
1
0
1
1
0
0
0
1
1
0
1
1
Tabela 38– Conversão NBCD para decimal e vice-versa
0 0 0 0 1 1 1 1 0 0 1 , 0 0 0
0
7
9
,
0
Sentido da conversão
←
→
0
0
Decimal
0
1
2
3
4
5
6
7
8
9
Invalido
0
0
0
0
1
1
2.13.1.2. Código de Gray
O código de Gray é um código de representação numérica e com o qual não se
executam operações matemáticas contudo ele é bastante utilizado nomeadamente em
conversores analógico para digital e em sensores do tipo encoder. A grande vantagem
deste código consiste na sua elevada imunidade a erros de transmissão.
Este código é elaborado de modo a que de número para número apenas varie um
bit, tal como nos mapas de Karnaugh de quadrícula para quadrícula apenas varia uma
variável.
Este código também é designado por código refletido pois à medida que se vai
aumentando um bit acrescenta-se um “zero” à esquerda da última tabela e acrescentando
um “um” para gerar a outra parte da tabela reflete-se esta como se fosse um espelho, na
tabela 39 apresenta-se a formação do código de Gray desde um bit até 4 bits.
Pagina | 59
Rogério Monteiro
Sistemas Digitais – Curso Profissional de Eletrónica, Automação e Comando
1 bit
Bit 0
0
1
2 bit’s
Bit 1
Bit 0
0
0
0
1
1
1
1
0
Bit 2
0
0
0
0
1
1
1
1
Tabela 39 - Geração do código de Gray
Código de Gray
3 bit’s
4 bit’s
Bit 1
Bit 0
Bit 3
Bit 2
Bit 1
0
0
0
0
0
0
1
0
0
0
1
1
0
0
1
1
0
0
0
1
1
0
0
1
1
1
1
0
1
1
0
1
0
1
0
0
0
0
1
0
1
1
0
1
1
0
1
1
1
1
1
1
1
0
1
1
0
1
1
0
0
1
0
0
Decimal
Bit 0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Para se converter do código de Gray para binário natural vai-se construir uma
tabela em que se representa o código de Gray com quatro bits e o código em binário
com quatro bits e a partir desta retirar as expressões lógicas através de mapas de
Karnaugh, isto é, vai-se utilizar como entradas os quatro bits do código de Gray G0, G1,
G2 e G3 e considerar as saídas B0, B1, B2 e B3 como as saídas.
Na tabela 40 apresenta-se a correspondência código Gray de 4 bits e binário
natural.
Tabela 40 - Correspondência código Gray de 4 bits e binário natural
Gray 4 bits
Binário natural 4 bits
G2
G1
G0
B3
B2
B1
B0
0
0
0
0
0
0
0
0
0
1
0
0
0
1
0
1
1
0
0
1
0
0
1
0
0
0
1
1
1
1
0
0
1
0
0
1
1
1
0
1
0
1
1
0
1
0
1
1
0
1
0
0
0
1
1
1
1
0
0
1
0
0
0
1
0
1
1
0
0
1
1
1
0
1
0
1
0
1
1
0
1
0
1
1
0
1
0
1
1
0
0
0
1
1
1
1
0
1
0
0
1
1
1
1
0
0
0
0
1
1
1
1
G3
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
Decimal
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Construindo-se os mapas de Karnaugh para B0, B1, B2 e B3 obtém-se:
B0
G1 G0
G2 G3
00
01
11
10
00
01
11
01
0
1
0
1
1
0
1
0
0
1
0
1
1
0
1
0
Pagina | 60
Rogério Monteiro
Sistemas Digitais – Curso Profissional de Eletrónica, Automação e Comando
Tirando-se a expressão e simplificando tem-se:
%%%%$3
%%%%$2
%%%% $1
%%%%$0$3
%%%%$2
%%%% $1
%%%%$0
%%%%$3$2
%%%% $1$0$3$2
%%%% $1$0
%%%%$3$2
#0 $1$0
%%%%$0$3$2 %%%%
%%%%$3
%%%%$2 $1$0$3
%%%%$2
$1
$1$0
%%%% $1
%%%%$0('$3
%%%%$2
%%%% $3$2( '$1
%%%%$0
%%%% $1$0('$3$2
%%%% $3
%%%%$1(
#0 '$1$0
%%%%%%%%%%%%% '$2⨁$3('$1⨁$0(
%%%%%%%%%%%%%
#0 '$1⨁$0('$3⨁$2(
#0 $0⨁$1⨁$2⨁$3
B1
G1 G0
G3 G2
00
01
11
10
00
01
11
10
0
1
0
1
0
1
0
1
1
0
1
0
1
0
1
0
Tirando-se a expressão e simplificando tem-se:
%%%%$2
%%%% $1
%%%%%%%%
%%%%
#1 $1$3
$3$2 $1$3$2 %%%%
$1$3$2
%%%%$2
%%%% $3$2( '$3
%%%%$2 $3$2
%%%%($1
%%%%
#1 $1'$3
%%%%%%%%%%%% $1
%%%%'$2 ⊕ $3(
#1 $1'$3⨁$2(
#1 $1⨁$2 ⊕ $3
B2
G1 G0
G3 G2
00
01
11
10
00
01
11
10
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
Tirando-se a expressão e simplificando tem-se:
%%%% $3
%%%%$2
#2 $3$2
#2 $3⨁$2
B3
G1 G0
G3 G2
00
01
11
10
00
01
11
10
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
#3 $3
Pagina | 61
Rogério Monteiro
Sistemas Digitais – Curso Profissional de Eletrónica, Automação e Comando
Das expressões lógicas anteriores pode-se construir o logigrama com portas
lógicas para a conversão do código de Gray para binário natural, o qual se apresenta na
figura 17.
Figura 17- Logigrama da conversão do código de Gray para binário natural
Para se converter do código binário para o código de Gray procede-se da mesma
forma mas as entradas passam a ser B0, B1, B2 e B3 e as saídas serão G0, G1, G2 e G3
construindo-se os mapas de Karnaugh para G0, G1, G2 e G3:
G0
B1 B0
B2 B3
00
01
11
10
00
01
11
01
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
Tirando-se a expressão e simplificando tem-se:
%%%% #0
%%%%#1
$0 #0#1
$0 #0⨁#1
G1
B1 B0
B3 B2
00
01
11
10
00
01
11
10
0
1
1
0
0
1
1
0
1
0
0
1
1
0
0
1
Pagina | 62
Rogério Monteiro
Sistemas Digitais – Curso Profissional de Eletrónica, Automação e Comando
Tirando-se a expressão e simplificando tem-se:
%%%% #2#1
%%%%
$1 #1#2
$1 #1⨁#2
G2
B0 B1
B3 B2
00
01
11
10
00
01
11
10
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
Tirando-se a expressão e simplificando tem-se:
%%%% #3
%%%%#2
$2 #3#2
$2 #3⨁#2
G3
B1 B0
B3 B2
00
01
11
10
00
01
11
10
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
$3 #3
Das expressões lógicas anteriores pode-se construir o logigrama com portas
lógicas para a conversão de binário natural para código de Gray, o qual se apresenta na
figura 18.
Figura 18- Logigrama da conversão de binário natural para código de Gray
Pagina | 63
Rogério Monteiro
Sistemas Digitais – Curso Profissional de Eletrónica, Automação e Comando
2.13.2. Códigos alfanuméricos
Os códigos alfanumérico permitem a representação de números, letras e
símbolos os mais importantes e os quais se irão abordar são os códigos ASCII e o
código ASCII estendido.
2.13.2.1. Código ASCII
O código ASCII ou seja o American Standard Code for Information Interchange
traduz-se por “Código Americano Standard para a Troca de Informações”, este código é
composto por 7 bits ou seja pode-se representar 128 símbolos diferentes, sendo algumas
destas representações correspondentes a instruções de transmissão de informação.
Na figura 19 apresenta-se a correspondência entre octal hexadecimal e decimal
de cada um dos símbolos do código ASCII.
Figura 19- código ASCII
2.13.2.2. Código ASCII estendido
O código ASCII estendido é um código que em vez de utilizar 7 bits utiliza 8
duplicando assim o número de símbolos que se podem utilizar sendo os primeiros
símbolos os mesmos dos representados pelo código ASCII e estando a correspondência
de decimal e hexadecimal com o símbolo dos restantes 128 símbolos represados na
figura 20.
Pagina | 64
Rogério Monteiro
Sistemas Digitais – Curso Profissional de Eletrónica, Automação e Comando
Figura 20 - restantes 128 símbolos do código ASCII estendido
2.14. Deteção e correção de erros
Todo e qualquer sistema de transmissão de informação na forma digital, está
sujeito a erros, esses advêm de existirem perturbação nos sinais transmitidos, tais
perturbações podem ser devidas a atenuação do sinal assim como ao aparecimento de
ruído no sinal o qual não se consegue eliminar como o caso do ruído térmico. Desta
forma torna-se necessário utilizar técnicas de deteção e correção de erros de entre as
muitas técnicas existentes vai-se apenas ver a técnica mais simples de deteção de erros
que é o método da paridade que se descreve de seguida.
2.14.1. Método da paridade
O método de paridade é o método mais simples de deteção de erros de
transmissão este método apenas consegue detetar um erro numa palavra transmitida ou
no caso de existirem um numero de erros impar na palavra transmitida, de notar ainda
que esta técnica apenas nos permite detetar erros em numero impar na transmissão e não
consegue corrigi-los.
Temos duas formas para aplicar este método a paridade par em que à mensagem
transmitida é acrescentado um bit designado por bit de paridade, sendo este bit 1 no
caso do número de uns ser impar e zero no caso do número de uns da mensagem ser par.
O outro método é o de paridade impar sendo este exatamente implementado da mesma
forma que o método de paridade par mas desta feita o número de uns na mensagem será
impar ou seja quando o número de uns é par o bit de paridade a acrescentar à mensagem
terá o valor zero e no caso do número de uns ser par terá o valor de 1.
Pagina | 65
Rogério Monteiro
Download