Módulo III - Sistemas Númericos e Códigos pag.4/4

fig401A conversão de um número decimal no seu equivalente binário é chamada codificação. Um número decimal é expresso como um código binário ou número binário. O sistema numérico binário, como apresentado, é conhecido como código binário puro. Este nome o diferencia de outros tipos de códigos binários.

Esta seção discutirá alguns dos outros tipos de códigos binários usados em computadores.

Decimal Codificado em Binário

O sistema numérico decimal é fácil de se usar devido à familiaridade. O sistema numérico binário é menos conveniente de se usar pois, nos é menos familiar. É difícil olhar em número binário e rapidamente reconhecer o seu equivalente decimal.

Por exemplo, o número binário 1010011 representa o número decimal 83.
É difícil dizer imediatamente, por inspeção do número, qual seu valor decimal. Entretanto, em alguns minutos, usando os procedimentos descritos anteriormente, pode-se prontamente calcular seu valor decimal. A quantidade de tempo que leva para converter ou reconhecer um número binário é uma desvantagem no trabalho com este código, a despeito das numerosas vantagens de "hardware".

fig402Os engenheiros reconheceram este problema cedo, e desenvolveram uma forma especial de código binário que era mais compatível com o sistema decimal. Como uma grande quantidade de dispositivos digitais, instrumentos e equipamentos usam entradas e saídas decimais, este código especial tornou-se muito difundido e utilizado. Esse código especial é chamado decimal codificado em binário (BCD - binary coded decimal). O código BCD combina algumas das características dos sistemas numéricos binário e decimais.

Código BCD 8421

O código BCD é um sistema de representação dos dígitos decimais desde 0 até 9 com um código binário de 4 bits. Esse código BCD usa o sistema de pesos posicionais 8421 do código binário puro. O usual código 8421 BCD e os equivalentes decimais são mostrados na tabela abaixo. Exatamente como binário puro, pode-se converter os números BCD em seus equivalentes decimais simplesmente somando os pesos das posições de bits onde aparece 1.

DECIMAL
BCD 8421
BINÁRIO
0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

0000

0001

0010

0011

0100

0101

0110

0111

1000

1001

0001 0000

0001 0001

0001 0010

0001 0011

0001 0100

0001 0101

0000

0001

0010

0011

0100

0101

0110

0111

1000

1001

1010

1011

1100

1101

1110

1111

Observe, entretanto, que existem apenas dez códigos válidos. Os números binários de 4 bits representando os números decimais desde 10 até 15 são inválidos no sistema BCD. Para representar um número decimal em notação BCD substitue-se cada dígito decimal pelo código de 4 bits apropriados.

Por exemplo, o inteiro decimal 834 em BCD é 1000 0011 0100. Cada dígito decimal é representado pelo seu código BCD 8421 equivalente. Um espaço é deixado entre cada grupo de 4 bits para evitar confusão do formato BCD com o código binário puro. Este método de representação também se aplica as frações decimais.

Por exemplo, a fração decimal 0,764 é “0.0111 0110 0100” em BCD. Novamente, cada dígito decimal é representado pelo seu código equivalente 8421, com um espaço entre cada grupo.

Uma vantagem do código BCD é que as dez combinações do código BCD são fáceis de lembrar. Conforme se começa a trabalhar com números binários regularmente, os números BCD tornam-se tão fáceis e automáticos como números decimais. Por esta razão, por simples inspeção da representação BCD de um número decimal pode-se efetuar a conversão quase tão rápido como se já estivesse na forma decimal.

Como exemplo, converter o número BCD no seu equivalente decimal.
0110 0010 1000.1001 0101 0100 = 628,954

O código BCD simplifica a interface Homem-máquina, mas é menos eficiente que o código binário puro. Usam-se mais bits para representar um dado número decimal em BCD que em notação binária pura.

Por exemplo, o número decimal 83 é escrito como 1000 0011. Em código binário puro, usam-se apenas 7 bits para representar o número 83. Em BCD, usam-se 8 bits. O código BCD é ineficiente, pois, para cada bit numa palavra de dado, há usualmente alguma circuitaria digital associada. A circuitaria extra associada com o código BCD custa mais, aumenta a complexidade do equipamento e consome mais energia. Operações aritméticas com números BCD também consomem mais tempo e são mais complexas que aquelas com números binários puros. Com quatro bits de informação binária, você pode representar um total de 24 = 16 estados diferentes ou os números decimais equivalentes desde o 0 até o 15. No sistema BCD, seis destes estados (10-15) são desperdiçados.

Quando o sistema numérico BCD é usado, alguma eficiência é perdida, mas aumenta-se o entendimento entre o equipamento digital e o operador humano.

A conversão de decimal para BCD é simples e direta. Entretanto, a conversão de binário para BCD não é direta. Uma conversão intermediária deve ser realizada primeiro. Por exemplo, o número 1011.01 é convertido no seu equivalente BCD.

Primeiro o número binário é convertido para decimal.
1011.012 = (1x23)+(0x22)+(1x21)+(1x20)+(0x2-1)+(1x2-2) =8+0+2+1+0+0,25 = 11,2510

Então o resultado decimal é convertido para BCD. 11,2510 = 0001 0001.0010 01012

Para converter de BCD para binário, as operações anteriores são invertidas. Por exemplo, o número BCD 1001 0110.0110 0010 0101 é convertido no seu equivalente binário.

1 - o número BCD é convertido para decimal. 1001 0110.0110 0010 0101 = 96,625
2 - o resultado decimal é convertido para binário

Inteiro Resto Posição Fração Inteiro Posição
96 ÷ 2 = 48 0 -> LSB 0,625 x 2 = 1,25 = 0,25 1 <- MSB
48 ÷ 2 = 24 0   0,250 x 2 = 0,50 = 0,50 0  
24 ÷ 2 = 12 0   0,500 x 2 = 1,00 = 0 0 <- LSB
12 ÷ 2 = 06 0        
06 ÷ 2 = 03 0        
03 ÷ 2 = 01 1        
01 ÷ 2 = 00 1 <- MSB      
9610 = 11000002
0,62510 = 0.1012
96,62510 = 9610 + 0,62510= 11000002 + 0.1012 = 1100000.1012

Como o número decimal intermediário contém uma parte inteira e uma parte decimal, cada parte é convertida como visto anteriormente. A soma binária (inteiro mais fração) 1100000.101 é equivalente ao número BCD 1001 0110.0110 0010 0101.

Vários códigos binários são chamados códigos alfanuméricos pois eles são usados para representar caracteres assim como números.

Código ASCII

O "American Standart Code for Information Interchange" comumente referido como ASCII, é uma forma especial de código binário que é largamente utilizado em microprocessadores e equipamentos de comunicação de dados.

Um novo nome para este código que está se tornando popular é "American National Standart Code for Information" (ANSCII). Entretanto, utilizaremos o termo consagrado, ASCII. É um código binário que usado em transferência de dados entre microprocessadores e seus dispositivos periféricos, e em comunicação de dados por rádio e telefone. Com 7 bits pode-se representar um total de 27 = 128 caracteres diferentes. Estes caracteres compreendem números decimais de 0 até 9, letras maiúsculas e minúsculas do alfabeto, mais alguns outros caracteres especiais usados para pontuação e controle de dados.

Também chamado ASCII completo, ou ASCII estendido. O código ASCII é mostrado nas tabelas abaixo.

NULL Null DLE Data Link Escape
SOH Start of Heading DC1 Device Control 1
STX Start of Text DC2 Device Control 2
ETX End of Text DC3 Device Control 3
EOT End of Transmission DC4 Device Control 4
ENQ Enquiry NAK Negative Acknowledge
ACK Acknowledge SYN Synchronous Idle
BEL Bell (audible signal) ETB End Transmission Block
BS Backspace CAN Cancel
HT Horizontal Tabulação
(punched card skip)

EM End of Medium
SUB Substitute
LF Line Feed ESC Escape
VT Vertical Tabulation FS File Separator
FF Form Feed GS Group Separato
CR Carriage Return RS Record Separator
SO Shift Out US Unit Separator
SI Shift In DEL Delete
SP Space (blank)
   coluna
bits 0 1 2 3 4 5 6 7
linha
7654321
000 001 010 011 100 101 110 111
0 0000 NUL DLE SP 0 @ P ` p
1 0001 SOH DC1 ! 1 A Q a q
2 0010 STX DC2 " 2 B R b r
3 0011 ETX DC3 # 3 C S c s
4 0100 EOT DC4 $ 4 D T d t
5 0101 ENQ NAK % 5 E U e u
6 0110 ACK SYN & 6 F V f v
7 0111 BEL ETB ' 7 G W g w
8 1000 BS CAN ( 8 H X h x
9 1001 HT EM ) 9 I Y i y
10 1010 LF SUB * : J Z j z
11 1011 VT ESC + ; K [ k {
12 1100 FF FS , < L \ l |
13 1101 CR GS - = M ] m }
14 1110 SO RS . > N ^ n ~
15 1111 SI US / ? O _ o DEL

O código ASCII para cada número, letra ou função de controle é constituído de um grupo de 4 bits e outro de 3 bits. tabela abaixo mostra a arrumação destes dois grupos e a seqüência numérica. O grupo de 4 bits está a direita e o bit 1 é o LSB. Observar como estes grupos são arranjados em linhas e colunas na tabela ASCII .

     
4 bits
7
6
5
4
3
2
1
3 bits
       

Para determinar o código ASCII para um dado número, letra ou controle, localiza-se na tabela o dado desejado. Então usa-se os códigos de 3 e 4 bits associados com a coluna e com a linha, respectivamente, na qual o item está localizado. Por exemplo, o código ASCII para a letra L é 1001100. Ele é localizado na coluna 4, linha 12. O grupo de 3 bits é 100, enquanto o grupo de 4 bits é 1100.

No código ASCII de 7 bits, um oitavo bit é geralmente usado como um bit de paridade para determinar se o dado (caracter) foi transmitido corretamente. O valor deste bit é determinado pelo tipo de paridade desejado. Paridade par significa que a soma de todos os uns, incluindo o bit de paridade, é um número par.

Por exemplo, se G é o caracter transmitido o código ASCII é 1000111. Desde que quatro uns estão no código, o bit de paridade é 0. O código de 8 bits seria escrito 01000111.

Paridade ímpar significa que a soma de todos os bits um, é um número ímpar. Se o código ASCII para G for transmitido com paridade ímpar, a representação binária seria 11000111.

Término do Módulo III "Sistemas Numéricos e Códigos"

ICEA/EAD © 2005