Baixe o app para aproveitar ainda mais
Prévia do material em texto
Notas de Aula – ELTD01 Prof. Tales C Pimenta, PhD CAPÍTULO 2 CÓDIGOS NUMÉRICOS Números fazem parte das atividades humanas e sua importância é indiscutível. Números estão presentes em toda a história assim como em muitos objetos pré-históricos. Apesar de suas formas de representação, estão na forma decimal pelo simples fato de termos dez dedos nas mãos. Entretanto podem haver outros códigos numéricos, de acordo com a necessidade ou conveniência. No caso de circuitos digitais utiliza-se o código binário. 2.1 REPRESENTAÇÃO NUMÉRICA Um número, como 1.327 representa uma quantidade igual um milhar, três centenas, duas dezenas e sete unidades, ou seja, 0123 10.710.210.310.1327.1 (2‐1) Nessa representação, a posição do número represente o seu peso, e é portanto uma representação posicional. O padrão dessa representação é dado por n n n n m m rarararararaN 11110011 ...... (2‐2) Ou de forma genérica n m i i raN (2‐3) onde r é a base, e a é um coeficiente inteiro, positivo e menor que r. Observe que essa representação é válida também para números negativos. Vale lembrar que no sistema decimal usam-se os símbolos 0, 1, 2, 3, 4, 5, 6, 7, 8 e 9. 2.1.1 Sistema Binário O princípio anterior, dado pelas expressões (2-2) e (2-3), é válido também para o sistema binário. No sistema binário existem somente dois valores, ou símbolos; 0 e 1. O dígito binário recebe o nome de bit (da concatenação da palavras em Inglês Binary Digit). Como exemplo, tem-se: Notas de Aula – ELTD01 Prof. Tales C Pimenta, PhD 132.12.02.12.11101 01232 (2‐4) O mesmo conceito se estende para números fracionários. Como exemplo, considere: 25,112.12.02.12.12.02.101,1011 2101232 (2‐5) Observe que para indicar a base binária utiliza-se o índice 2. Se não houver nenhuma indicação, será considerado base decimal. 2.1.2 Sistema Octal Outro sistema de numeração é o octal, onde usam-se os símbolos 0, 1, 2, 3, 4, 5, 6 e 7. Como exemplo, tem-se: 4618.58.18.7715 0128 (2‐6) Neste sistema podem-se usar os índices 8 ou o (letra o minúsculo) para indicar base octal. O sistema octal apresenta um uso extremamente limitado. 2.1.3 Sistema Hexadecimal O sistema hexadecimal é de uso intenso, e nesse sistema de numeração usam-se os símbolos 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E e F. Como exemplos, tem-se 195716.516.1016.757 012 HA (2‐7) Pode ser usados os índices 16 ou H para indicar base hexadecimal. 2.1.4 Sistemas Básicos No sistema decimal, faz-se a contagem 0, 1, 2, 3, 4, 5, 6, 7, 8 e 9. Nesse momento, como todos os símbolos foram usados, a contagem reinicia no símbolo 0, e ao mesmo tempo, faz-se um incremento na contagem no dígito imediatamente mais significativo. Desta forma, após o 9, a contagem volta ao 0 e o decimal avança para 1. Esse conceito vale para as demais posições. Como exemplo, quando se atingir 99, a unidade reinicia em 0 e a dezena sofre um incremento, passando de 9 para 0, o que por sua vez avança a centena, e assim a contagem passa de 99 para 100. Esse mesmo conceito vale para os sistemas octal, hexadecimal e binário. A Tabela 2.1 apresenta o sistema decimal juntamente com os sistemas binário, octal e hexadecimal. Essa tabela apresenta apenas os 16 primeiros números nos quatro sistemas. Notas de Aula – ELTD01 Prof. Tales C Pimenta, PhD Tabela 2.1 – Sistemas básicos de numeração. Decimal Binário Octal Hexadecimal 0 0000 0 0 1 0001 1 1 2 0010 2 2 3 0011 3 3 4 0100 4 4 5 0101 5 5 6 0110 6 6 7 0111 7 7 8 1000 10 8 9 1001 11 9 10 1010 12 A 11 1011 13 B 12 1100 14 C 13 1101 15 D 14 1110 16 E 15 1111 17 F 2.2 CONVERSÕES DE BASE A conversão de qualquer base para a base decimal é feita por meio das expressões (2-2) e (2-3), tanto para parte inteira quanto fracionária. 2.2.1 Conversão de Decimal para outras Bases – Números Inteiros A conversão de números inteiros da base 10 para outras bases é feito pelo método da divisão sucessiva. Nesse método, o número a ser convertido é dividido sucessivamente pela base desejada. O processo continua até que o quociente seja menor que a base desejada. Os restos da divisão, na ordem reversa, correspondem ao valor convertido. Considere os exemplos da Figura 2.1 para auxiliar no entendimento. Pela Figura 2.1.a tem-se 12 = 11012, a Figura 2.1.b ilustra 19 = 100112, na Figura 2.1.b é mostrado que 123 = 2138 e finalmente a Figura 2.1.b mostra que 615 = 267H. 12 2 0 6 2 0 3 2 1 1 2 1 0 19 2 1 9 2 1 4 2 0 2 2 0 1 2 1 0 123 8 3 15 8 1 2 8 2 0 615 16 7 38 16 6 2 16 2 0 (a) (b) (c) (d) Figura 2.1 – Conversões de inteiro na base 10 para (a) binário, (b) binário, (c) octal e (d) hexadecimal. Notas de Aula – ELTD01 Prof. Tales C Pimenta, PhD 2.2.2 Conversão de Decimal para outras Bases – Números Fracionários A conversão de números fracionários da base 10 para outras bases é feito pelo método da multiplicação sucessiva. Neste método, o valor na base decimal é multiplicado pela base desejada. A parte inteira do resultante da multiplicação corresponde ao dígito mais significativo. A parte fracionária é novamente multiplicada pela base e assim sucessivamente. O processo termina quando a parte fracionária se torna igual a zero, como mostrado na Figura 2.2.a, onde 0,125 = 0,0012. O processo também termina quando se atinge a precisão desejada, como ilustrado na Figura 2.2.b, para uma precisão de 4 dígitos. Assim, 0,32 ≈ 0,01012. Figura 2.2 – Conversões de fracionário na base 10 para binário (a) sem arredondamento e com arredondamento. A Figura 2.3.a mostra como exemplo de conversão de número fracionário decimal para hexadecimal, 0,3475 = 0,58H. Observe que o processo finalizou com dois dígitos. A Figura 2.3.b mostra como exemplo de conversão de número fracionário decimal para hexadecimal, 0,32 = 0,24368. Nesse caso o processo foi paralisado em 4 dígitos. Figura 2.3 – Conversões de fracionário na base 10 para (a) octal e (b) hexadecinal. 2.2.3 Conversão de Decimal para outras Bases – Números Mistos A conversão de números com partes inteiras e fracionárias é feito de forma separada. A parte inteira é convertida pela divisão sucessiva e a parte fracionária é obtida pela multiplicação sucessiva. A seguir as partes separadas são unidas. Como exemplo 12,125 é divido em 12 + 0,125. A parte inteira vale 11002 (vide Figura 2.1.a) e a parte fracionária vale 0,0012 (vide Figura 2.2.a). Portanto, tem-se que 12,125 = 1100,0012. Notas de Aula – ELTD01 Prof. Tales C Pimenta, PhD 2.2.3 Conversão entre Bases 2n As conversões de números binários para as bases hexadecimal e octal são feitas diretamente pela Tabela 2.1. Da mesma forma, a conversão de octal e hexadecimal para binário também pode ser feita de forma direta, pela Tabela 2.1. Esses procedimentos de conversão valem para números inteiros e fracionários. Como exemplo, considere: 201117 H 20111000117 H 28 1117 28 11100117 HD1110100012 82 51101001 Ocasionalmente o número de dígitos se torna incompatível. A parte inteira pode ser complementada com zeros à esquerda, se necessário para atingir a quantidade de bits necessária. Da mesma forma, a parte fracionária pode receber zeros à direita. Como exemplo, considere: 822 32101101000111010001 H2900101001101001 22 Essa conversão entre binário e octal foi possível pois 81 = 23. Desta forma três dígitos binários formam um dígito octal. Da mesma forma a conversão entre binário e octal é válido pois 161 = 24. Consequentemente, quatro dígitos binários formam um dígito hexadecimal. Entretanto não é possível fazer a conversão direta entre octal e hexadecimal pois não a relação161 = 8N não pode ser satisfeita para N inteiro. Desta a forma, a conversão entre octal e hexa é feita usando binário como intermediário. Neste tipo de conversão devem-se agrupar os bits de acordo com a base de destino. Como exemplo, considere: 822 124711110001000101111010001072 HA HD270010110101110100101110113722 228 2.3 CODIGO GRAY A sequência binária, mostrada na Tabela 2.1, corresponde à sequência natural crescente em binário. Nessa sequência, um ou mais bits podem mudar de valor ao mesmo tempo. Considere, como exemplo, a mudança de 7 para 8, isto é, de 01112 para 10002, onde todos os bits mudam de valor. Mudança de múltiplos bits pode ser um problema! Notas de Aula – ELTD01 Prof. Tales C Pimenta, PhD Para facilitar o entendimento das implicações que isso pode ocasionar, observe o sistema mecânico da Figura 2.4. Há um disco com áreas pintadas representando o código binário, sendo que as áreas pintadas representam 1 e as áreas não pintadas representam 0. Desta forma, os sensores A, B e C indicam os valores binários correspondentes de uma faixa de ângulos do disco. Obviamente, este sistema apresenta apenas 3 sensores e consequentemente o disco apresenta somente 23 = 8 faixas de valores. Quanto mais sensores existirem, menor será a faixa de ângulos. Figura 2.4 – Sistema mecânico usando código binário. Este sistema poderia estar acoplado a qualquer dispositivo de posicionamento, como por exemplo, um anemoscópio, que indica a direção do vento. Considere que o disco gire lentamente no sentido horário. Sendo o valor atual 0002, o próximo valor deverá ser 1112. O momento de transição poder ser delicado, pois se os sensores não estiverem perfeitamente alinhados, se a pintura do disco não for perfeita e se os sensores não forem idênticos (fatos normais), podem aparecer valores intermediários indevidos. Assim, a mudança que deveria ser direta de 0002 para 1112 acaba passando por valores intermediários indesejados. Dependendo de qual bit mudar primeiro, seis sequências diferentes podem aparecer, como mostrado na Tabela 2.2. Se a informação sobre a posição do disco estiver sendo armazenada, ao se fazer uma análise posterior, pode-se chegar à conclusão equivocada de que o sistema marcou posições indevidas do disco, ou que o sistema de aquisição está com falhas. Notas de Aula – ELTD01 Prof. Tales C Pimenta, PhD Tabela 2.2 – Possíveis sequências entre 000 e 111. ABC ABC ABC ABC ABC ABC 000 000 000 000 000 000 100 100 010 010 001 001 110 101 110 011 101 011 111 111 111 111 111 111 Esse problema pode ser evitado com o uso do código Gray, em que somente um bit muda de valor entre duas posições consecutivas. A Figura 2.5 ilustra o disco com o código Gray, que poderia ser usado no sistema da Figura 2.4. Com o uso do código Gray, não há leituras intermediárias errôneas, ainda que haja desalinhamento dos sensores, pois somente um bit muda entre duas posições consecutivas. Figura 2.5 – Disco de posicionamento usando código Gray. 2.3.1 Obtenção do Código Gray O código Gray pode ser obtido por espelhamentos sucessivos. A Figura 2.6.a mostra o código Gray de 2 bits, que obviamente é igual ao código binário. Faz-se então o espelhamento dessa sequência, e tem-se então 0 ,1, 1, 0. Um dos lados do espelhamento recebe 0 como primeiro bit e o outro lado do espelhamento recebe 1 como primeiro bit, como mostrado em azul na Figura 2.6.b. Essa sequência obtida é a sequência Gray de dois bits. Se agora essa sequência for espelhada, e se um dos lados do espelhamento receber 0 como primeiro bit e o outro lado do espelhamento receber 1 como primeiro bit, como mostrado em azul na Figura 2.6.c, obtém-se a sequência Gray de três bits. Esse procedimento pode ser repetido até que se atinja o número de bits desejado. Notas de Aula – ELTD01 Prof. Tales C Pimenta, PhD Figura 2.6 – Códigos Gray de (a) um bit, (b) dois bits e (c) três bits. 2.3.2 Conversão entre código Gray e binário A conversão de binário para Gray pode ser feita diretamente sem o uso de tabelas e sem a necessidade de se montar o código inteiro a partir de espelhamentos. Afinal, começa a ficar inviável fazer espelhamentos para mais de cinco bits. A conversão é feita duplicando o primeiro bit e fazendo-se operação Ou-Exclusivo entre primeiro e segundo bits da sequência binária para gerar segundo bit Gray. Da mesma forma, faz-se operação Ou-Exclusivo entre segundo e terceiro bits da sequência binária para gerar terceiro bit Gray, e assim sucessivamente. A Figura 2.7 apresenta como exemplo a conversão de 1100112 para Gray. A Tabela 2.3 apresenta a operação Ou-Exclusivo entre dois valores A e B. Essa operação é representada por . 1 1 1 0 0 1 0 0 1 1 1 0 Figura 2.7 – Conversão binário-Gray. Tabela 2.3 – Operação Ou-Exclusivo. A B AB 0 0 0 0 1 1 1 0 1 1 1 0 Notas de Aula – ELTD01 Prof. Tales C Pimenta, PhD A conversão de Gray para binário é feita de forma similar. O primeiro bit é obtido de forma idêntica à anterior, isto é, apenas duplicado. O segundo bit binário é obtido fazendo- se operação Ou-Exclusivo entre o primeiro bit Gray e o segundo bit binário. Mantendo este princípio, o terceiro bit binário é obtido fazendo-se operação Ou-Exclusivo entre o segundo bit Gray e o terceiro bit binário, como ilustrado pelo exemplo da Figura 2.8, onde se faz a conversão de 100111Gray para binário. Figura 2.8 – Conversão Gray-binário. 2.4 CÓDIGOS BCD Números binários de alguns bits podem ser manuseados com relativa facilidade. Entretanto se o número de bits começa a crescer, fica difícil de identificar o valor. Isso ocorre porque os seres humanas trabalham no sistema decimal. Assim, considerando que os seres humanos trabalham naturalmente na base decimal e que seria difícil manusear grandes números no código binário, foram criados os códigos decimal codificado em binário – BCD (binary coded decimal). Neste código, cada dígito decimal é convertido em quatro bits binários. O contrário também é válido, isto é, cada quatro bits representam um número decimal. A Tabela 2.4 apresenta alguns códigos BCD, sendo que o BDC8421 e o BDCXS3 são os mais importantes. O código BDC8421 corresponde aos dez primeiros valores da sequência binária de quatro bits. Esse é um código posicional, isto é, assim como o código binário, a posição do bit determina o seu peso. O bit mais significativo tem peso 8, o segundo bit tem peso 4, o terceiro bit tem peso 2 e finalmente o bit menos significativo tem peso 1. Esse é de fato o motivo de seu nome, BDC8421. Como mostrado na Tabela 2.4, o decimal 5 é formado por RSTU = 0101, ou seja, 0.8+1.4+0.2+1.1. Como exemplo, considere as conversões a seguir para o código BCD8421, via Tabela 2.4. Por simplicidade o código BCD8421 é referido apenas por código BCD. BCD1001001001000111001137429 2941701110001010010010010 BCD Notas de Aula – ELTD01 Prof. Tales C Pimenta, PhD Tabela 2.4 – Códigos BCD. Decimal BDC8421 BDC6321 BDC2421 BDCXS3 RSTU XYZW KLMN FGHI 0 0000 0000 0000 0011 1 0001 0001 0001 0100 2 0010 0010 0010 0101 3 0011 0100 0011 0110 4 0100 0101 0100 0111 5 0101 0110 0101 1000 6 0110 1000 0110 1001 7 0111 1001 0111 1010 8 1000 1010 1110 1011 9 1001 1100 1111 1100 O código BDC6321 também é um código posicional, porém os bits têm pesos diferentes do BDC8421. O bit mais significativo tem peso 6, o segundo bit tem peso 3, o terceiro bit tem peso 2 e finalmente o bit menos significativo tem peso 1. Como mostrado na Tabela 2.4, o decimal 5 é formado por XYZW = 0110, ou seja, 0.6+1.3+1.2+0.1. O código BDC2421 também é um código posicional, porém há dois bits com mesmo peso. Como exemplo, veja que pela Tabela 2.4, odecimal 2 é formado por KLMN = 1000 (1.2+0.4+0.2+0.1) ou KLMN = 0010 (0.2+0.4+1.2+0.1). Da mesma forma, o decimal 5 é formado por KLMN = 1011 (1.2+0.4+1.2+1.1) ou KLMN = 0101 (0.2+1.4+0.2+1.1). Podem ser montados vários tipos de códigos BCD posicionais, bastando apenas que se consigam representar todos os números entre 0 e 9. Entretanto, em todos os códigos posicionais, o número o é representado por todos os bits em 0. Dependendo da situação, isso pode ser inconveniente. Como exemplo, não há diferença alguma entre não mandar informação nenhuma ou mandar 0. Para isso foi criado o código BDCXS3. O código BDCXS3 é formado pela sequência binária com a adição de 3. Assim, o decimal 0 em binário é 0000, porém em BDCXS3 é representado por 3, ou seja, 0011. Isso vale para todos os decimais no código BDCXS3, conforme pode ser observado na Tabela 2.4. O nome XS3 deriva da sonorização, em Inglês, que indica excesso 3 (excess three). Como exemplo, considere as conversões a seguir para o código BCDXS3, via Tabela 2.4. 0612401110101010010010011 BCD Notas de Aula – ELTD01 Prof. Tales C Pimenta, PhD 2.5 CÓDIGOS ALFANUMÉRICOS Além dos códigos já apresentados, usado na representação de números, existem também os códigos alfanuméricos. Dentre esses, o mais conhecido é o Código Padrão Americano para Troca de Informações - ASCII (American Standard for Information Interchange) que é composto de 7 bits. A Tabela 2.5 a listagem parcial desse código. Tabela 2.5 – Códigos ASCII. Caracter ASCII Hexadecimal Caracter ASCII Hexadecimal A 100 0001 41 Y 101 1001 59 B 100 0010 42 Z 100 1010 5A C 100 0011 43 0 011 0000 30 D 100 0100 44 1 011 0001 31 E 100 0101 45 2 011 0010 32 F 100 0110 46 3 011 0011 33 G 100 0111 47 4 011 0100 34 H 100 1000 48 5 011 0101 35 I 100 1001 49 6 011 0110 36 J 100 1010 4ª 7 011 0111 37 K 100 1011 4B 8 011 1000 38 L 100 1100 4C 9 011 1001 39 M 100 1101 4D branco 010 0000 20 N 100 1110 4E . 010 1110 2E O 100 1111 4F ( 010 1000 28 P 101 0000 50 + 010 1011 2B Q 101 0001 51 $ 010 0100 24 R 101 0010 52 * 010 1010 2A S 101 0011 53 ) 010 1001 29 T 101 0100 54 - 010 1101 2D U 101 0101 55 / 010 1111 2F V 101 0110 56 , 010 1100 2C W 101 0111 57 = 011 1101 3D X 101 1000 58 returno 000 1101 0D próx. linha 000 1010 0A Além desses códigos, existem vários outros, de aplicações específicas. Notas de Aula – ELTD01 Prof. Tales C Pimenta, PhD 3.4 EXERCÍCIOS 1. Faça as conversões indicadas: a. 101,012 BCD8421 b. 101,012 base 8 c. 101,012 base 10 d. 101,012 base 16 e. 457,038 base 10 f. 457,038 base 16 g. 457,038 BCD8421 h. 110111011012 Gray i. 11011101101Gray base 2 j. 11011101101Gray base 10 k. 11011101101Gray base 8 l. 11011101101Gray base 16 m. A5,EF16 base 2 n. A5,EF16 base 10 o. A5,EF16 base 8 p. A5,EF16 BCD8421 q. 173,0510 base 16 r. 173,0510 base 8 s. 173,0510 base 2 t. 173,0510 Gray u. 173,0510 BCD8421 Notas de Aula – ELTD01 Prof. Tales C Pimenta, PhD 2. Quantos números existem entre os hexadecimais AF32 e 5FBC? 3. Quantos números existem entre os binários 111002 e 100112? 4. Qual o efeito do deslocamento da vírgula, para a direita e para a esquerda, num número binário? 5. Represente os números 123, 12 e 1450 nos códigos binários e BCD. 6. Desenvolva uma tabela para o código BCD4321 7. É possível ter um código BCD6411? E um código BCD4211? Por quê? 8. Em que código 9 + 8 = 11? E 7 + 7 = 16? 9. É possível converter 487,038 decimal? 10. Uma mulher diz ter “apenas” 20 anos em hexadecimal. Qual é a idade real?
Compartilhar