ENTENDA A NUMERAÇÃO BINÁRIA

 

Computadores, microprocessadores, microcontroladores operam utilizando lógica digital binária. Assim, a representação de todos os valores nesses equipamentos e componentes é feita com base na numeração binária. Veja como isso é feito e como ler números binários nas entradas e saídas dos circuitos digitais.

 

                                 __________________     Newton C. Braga (*)

 

(*) Este artigo é na verdade uma adaptação da primeira lição do Curso de Eletrônica Digital que o leitor pode baixar neste site na seção de Cursos ou então de forma mais completa, encontrar no livro do mesmo nome.

                                  _______________________

 

Os circuitos eletrônicos não possuem dedos. É evidente também que não seria muito fácil projetar circuitos que sejam capazes de reconhecer 10 níveis de uma tensão ou de outra grandeza elétrica sem o perigo de que, qualquer pequeno problema faça-os o causar confusão. Uma pequena variação da tensão nestes circuitos pode mudar um 3 para 4 ou vice-versa, afetando os cálculos que ele tenha que realizar. Muito mais simples para os circuitos eletrônicos é trabalhar com um sistema de numeração que esteja mais de acordo com o seu princípio de funcionamento e isso realmente é feito. Um circuito eletrônico pode ter ou não ter corrente, pode ter ou não ter tensão, pode receber ou não um pulso elétrico. Também é muito mais fácil diferenciarmos dois estados de elementos indicadores como uma lâmpada acesa ou apagada, uma campainha em silêncio ou tocando. Ora, os circuitos eletrônicos são mais apropriados para operar com sinais que tenham duas condições possíveis, ou seja, que representem dois dígitos ou algarismos. Também podemos dizer que as regras que regem o funcionamento dos circuitos que operem com apenas duas condições possíveis são muito mais simples.

Houve época em que se tentou trabalhar com as quantidades na forma original analógica, com a criação de computadores capazes de realizar cálculos complexos, mas com o tempo ficou claro que trabalhar com duas condições possíveis apenas para os circuitos, adotando uma lógica digital, era muito mais vantajoso, por diversos motivos. Assim, o sistema adotado nos circuitos eletrônicos digitais modernos é o sistema binário ou de base 2 onde apenas dois dígitos são usados, correspondentes a duas condições possíveis de um circuito: 0 e 1. A idéia básica é a mesma usada na representação de quantidades no sistema decimal: atribuir pesos aos dígitos conforme sua posição no número. Para entendermos melhor como tudo isso funciona, vamos tomar como exemplo o valor 1101 que em binário representa o número 13 decimal (*) e ver como isso ocorre.

                                            ______________________

(*) Para não fazermos confusões em relação ao tipo de base que está sendo usada para representar um número ou quantidade, é comum colocarmos ao lado, como índice, a base que está sendo usada.

Assim, ao falarmos em 1101 em binário, escrevemos simplesmente 11012  e para representar 13 em decimal, escrevemos 1310 .

            ________________________

O primeiro dígito da direita nos indica que temos uma vez o peso deste dígito ou 1. O zero do segundo dígito da direita para a esquerda indica que não temos nada com o peso 2. Agora o terceiro dígito da direita para a esquerda e que tem peso 4 é um 1, o que indica que temos "uma vez quatro". Finalmente o primeiro dígito da esquerda que é um 1, e que está na posição de peso 8, nos diz que temos "uma vez oito". Somando uma vez oito, com uma vez quatro e uma vez um, temos o total que é justamente a quantidade que conhecemos em decimal como treze. Veja então que, conforme mostra a figura 1 que na numeração binária, os dígitos vão tendo pesos, da direita para a esquerda que são potencias de 2, ou seja, dois elevado ao expoente zero que é um, dois elevado ao expoente 1 que é 2; dois ao quadrado que é 4 e assim por diante.

 

 64   32   16   8   4    2   1 

  |       |      |     |    |    |     !

  26    25     24   23  22  21   20  - Peso

  |      |      |      |    |    |     |

  1     0     1    1   0   1    0

Figura 1 – Pesos na numeração binária

 

Para o leitor basta lembrar que a cada dígito que nos deslocamos para a esquerda seu peso dobra, conforme mostra a figura 2.

 

  <-------------------------Os pesos aumentam-------------------

  64          32          16           8          4          2           1  

   |             |              |            |            !          |             |

1 x 64   0 x 32     1 x 16    1 x 8     0 x 4   1 x 2       0 x1

Figura 2 – Na numeração binária os pesos dobram a cada dígito deslocado para a esquerda.

 

Como não existe um limite para os valores dos pesos, isso significa que é possível representar qualquer quantidade em binário, por maior que seja, simplesmente usando a quantidade apropriada de dígitos. Para 4 dígitos podemos representar números até 15; para 8 dígitos podemos ir até 255; para 16 dígitos podemos ir até 65 535 e assim por diante. O leitor deve lembrar-se desses valores limites para 4, 8 e 16 dígitos de um número binário pois eles têm uma grande importância nas aplicações digitais modernas.

________________________

Tabela com potências de 2

Potência de 2

Valor

20

1

21

2

22

4

23

8

24

16

25

32

26

64

27

128

28

256

29

512

210

1024

211

2048

212

4096

213

8192

214

16 384

215

32 768

216

65 536

217

131 072

218

262 144

219

524 288

220

1 048 576

 

A seguir damos a representação binária dos números decimais até 17 para que o leitor tenha uma idéia de como tudo funciona:

 

   decimal    binário          decimal    binário

     0                0                     9        1001

     1                1                    10        1010

     2               10                   11        1011

     3               11                   12        1100

     4              100                   13        1101

     5              101                   14        1110

     6              110                   15        1111 

     7              111                   16       10000

     8            1000                   17       10001... etc.

 

Para o leitor que pretende entender de eletrônica digital aplicada aos computadores, equipamentos industriais e mecatrônicos existem momentos em que é preciso saber converter uma indicação em binário para o decimal correspondente. Podemos dar como exemplo o caso de certas placas que são usadas no diagnóstico de computadores e de máquinas industriais as quais possuem um conjunto de LEDs que acendem indicando um número que corresponde a um código de erros. Os LEDs apagados indicam o algarismo 0 e os LEDs acesos indicam o algarismo 1. Vamos supor que num diagnóstico a sequência de acendimento dos LEDs seja 1010110. De início o leito precisa saber por onde começar a leitura ou seja, se o de menor peso é o da direita ou da esquerda. Nas indicações dadas por instrumentos ou mesmo na representação da valores binários, como por exemplo na saída de um circuito é preciso saber qual dos dígitos tem maior peso e qual ter menor peso. Isso é feito com uma sigla que é adotada normalmente e que refere-se ao dígito, no caso denominado bit. Assim, para o dígito de menor peso ou bit menos significativo é adotada a sigla LSB (Least Significante Bit) e para o mais significativo é adotada a sigla MSB (Most Significant Bit), conforme mostra a figura 3.

 

                  1   0   0   1   1  1  0  1  0

                   |                                  |

                 MSB                           LSB 

                   |                                  |

              Peso 64                       Peso 1

Figura 3 – Extremos de um número binário.

O que fazemos é somar os valores dados pelos dígitos multiplicados pelo peso de sua posição. No caso do valor tomado como exemplo, 1010110, temos:

 

   Dígito     Peso       Valor

     1     x   64    =    64   

     0     x   32    =     0

     1     x   16    =    16

     0     x    8    =     0

     1     x    4    =     4

     1     x    2    =     2

     0     x    1    =     0

 

Somando os valores temos:

   64 + 16 + 4 + 2 = 86

 

O valor decimal de 1010110 é 86, ou usando a notação mais apropriada:

   10101102  = 8610

 

Observe que, para fazer uma conversão, tudo que o leitor tem de fazer é lembrar que a cada dígito que saltamos para a esquerda seu peso dobra na sequência 1, 2, 4, 8, 16, 32, 64, 128, etc. Na prática também pode ocorrer o problema inverso que é a transformação de um valor expresso em decimal (base 10) para a base 2 ou binário. Para esta transformação podemos fazer uso de algoritmo muito simples que memorizado pelo leitor pode ser de grande utilidade, dada sua praticidade. Para os que não sabem, algoritmo nada mais é do que uma sequência de operações que seguem uma determinada regra e que permite realizar uma operação mais complexa. Quando você soma os números um sobre o outro (da mesma coluna) ao fazer uma soma e passar para cima os dígitos que excedem o 10, fazendo o conhecido "vai um" você nada mais está fazendo do que usar um algoritmo.

Os microprocessadores dos computadores, máquinas industriais, equipamentos "inteligentes" baseados em DSPs e microprocessadores usam muitos tipos de algoritmos quando fazem suas operações, se bem que a maioria não precisa ser conhecida dos leitores agora. Vamos ver então como usar o algoritmo para a conversão de um decimal para binário, como por exemplo o 125. O que fazemos é uma série de divisões sucessivas, conforme mostra a figura 4.

            

     116|2___

       16    58|2___

         0     18   29|2____

                  0   09    14|2____

                         1     0    7|2____

1       3|2____

1      1     

    <-------------------------binário

    Resultado:  116 = 1110100

Figura 4 – Conversão de um decimal em binário.

Vamos dividindo os números por 2 até o ponto em que chegamos a um valor menor que 2 e que portanto não mais pode ser dividido. O resultado desta última divisão, ou seja, seu quociente é então o primeiro dígito binário do número convertido. Os demais dígitos são obtidos lendo-se os restos da direita para a esquerda da série de divisões que realizamos. Tudo muito simples e rápido.

________________

Quilo, Mega e Giga

Em eletrônica digital e principalmente a que envolve os computadores, assim como na eletrônica analógica   tradicional é comum o uso de prefixos para representar quantidades muito grandes ou muito pequenas. Dessa forma, os prefixos Quilo (k) para representar milhares, Mega (M) para representar milhões e Giga (G) para representar bilhões também são usados em eletrônica digital.No entanto, diferentemente, do que ocorre com a eletrônica analógica, esses prefixos representam quantidades "levemente" diferentes.O que ocorre é que quando usamos quilo (k) para representar 1 000 (mil), na base 10, 1000 é um valor inteiro, o que não ocorre com a base 2. Assim, o valor mais próximo da base 2 é 1024. Isso significa que, em eletrônica digital, o valor quilo, na realidade representa 1024. Uma memória que tenha uma capacidade de armazenar 1 quilo bit ou 1 kb, na verdade, armazena 1024 bits. Da mesma forma, quando falamos que um programa de computador exige um espaço de memória de 1 Mega bytes, na verdade, ele exige um espaço de 1 048 576 bytes, já que a potência de 2 mais próxima de 1 milhão é 1 048 576. Em outras palavras, para informática e eletrônica digital o quilo (k) vale 1024, o mega (M) vale 1 048 576 e o Giga vale 1 073 741 824.

                       ___________________

 

BINÁRIOS MENORES QUE 1

Para o leitor talvez seja difícil entender como usando quantidades que só podem ser inteiras, como dado pela definição de digital, seja possível representar quantidades menores que um, ou seja, números "quebrados" ou fracionários. É claro que isso é possível na prática, pois se assim não fosse os computadores, equipamentos digitais de controle e automação e as calculadoras não poderiam realizar qualquer operação com estes números e sabemos que isso não é verdade.O que se faz é usar um artifício que consiste em empregar potências negativas de um número inteiro para representar quantidades que não são inteiras. Dessa forma é possível usar dígitos binários para representar  quantidades fracionárias sem problemas.  Vamos dar um exemplo tomando como exemplo o número 0,01101 em binário .

 

A própria existência de um "0," já nos sugere que se trata de um número menor que 1 e portanto fracionário.

                 ____________________

Ponto e Vírgula Decimal

(*) Alertamos que a separação da parte inteira da parte "quebrada" de um número, no nosso país é feita por uma "virgula" enquanto que em outras países, como nos de língua inglesa, é feita por um ponto. Assim, falamos em vírgula decimal enquanto que eles falam em ponto decimal.

                ____________________

O que ocorre é que os dígitos deste número têm pesos que correspondem à potências de 2 negativas que nada mais são do que frações, conforme a seguinte sequência:

   

   Dígito      Peso        Valor

     0,    x     1           0

     0     x    1/2         0,5

     1     x    1/4         0,25

     1     x    1/8         0,125

     0     x    1/16       0,0625

     1     x    1/32       0,03125

Somando os valores relativos temos:

   0,25 + 0,0625 + 0,03125 = 0,625

 

O número decimal representado é portanto 0,625. Veja que, usando tantos dígitos quantos sejam necessários podemos representar com qualquer precisão um numero decimal menor que 1.

______________________

Potências Negativas de 2

Na tabela dada a seguir temos algumas potências negativas de 2, usadas para representar números menores que 1.  

Potência Negativa de 2

Decimal

20

1

2-1

0,5

2-2

0,25

2-3

0,125

2-4

0,062 5

2-5

0,031 25

2-6

0,015 625

2-7

0,007 812 5

2-8

0,003 906 25

2-9

0,001 953 125

2-10

0,000 976 562 5

                        _____________________

 

FORMAS DIFERENTES DE USAR O SISTEMA BINÁRIO

A utilização de circuitos eletrônicos com determinadas características e a própria necessidade de se adaptar o sistema binário à representação de valores que sejam convertidos rapidamente para o decimal e mesmo outros sistemas, levou ao aparecimento de algumas formas diferentes de utilização dos binários denominados "puros".Estas formas são encontradas em diversos tipos de equipamentos digitais incluindo os próprios computadores.

 

Sistema BCD (Decimal Codificado em Binário)

BCD é a abreviação de Binary Coded Decimal e se adapta melhor aos circuitos digitais por características que ficarão mais claras no decorrer de nosso curso. O que se faz é transformar cada dígito decimal de um número em um grupo de quatro dígitos binários (bits) independentemente do valor total do número que vai ser representado.

Partimos então da seguinte tabela:

 

     Dígito decimal     BCD

           0                  0000

           1                  0001

           2                  0010

           3                  0011

           4                  0100

           5                  0101

           6                  0110

           7                  0111

           8                  1000

           9                  1001

Assim, se quisermos representar em BCD o número 23,25 não o convertemos da forma convencional por divisões sucessivas mas sim, tomamos cada dígito decimal e o convertemos no BCD equivalente conforme se segue:

 

     2        3,         2       5

   0010  0011  0010  0101

 

Veja então que, para cada dígito decimal sempre teremos quatro dígitos binários ou bits e também que os valores 1010, 1011, 1100, 1101 e 1111 não existem neste código. Esta representação foi muito interessante quando as calculadoras se tornaram populares pois podia ser usada para todas as operações com números comuns e os 5 códigos que não eram usados dos valores que não existiam forem adotados para indicar as operações! (figura 5)

 

0      1     2                    +

      3     4    5                    -

       6     7    8                   X

             9                          ÷

  Binários 0000 a 1010   Binários 1011 a 1111

Figura 5 = Uso dos valores de 0000 a 1111 num teclado de calculadora ou computador elementar.

 

Usando   representações desta forma, operavam os primeiros computadores que muito apropriadamente eram chamados de computadores de "4 bits".

  

Outros Códigos:

Outros códigos binários, que são importantes nas aplicações industriais, são o código biquinário, em que cada dígito tem um peso, e são sempre usados 7 bits para sua representação e o código Gray que aparece em diversas versões. O código Gray se caracteriza pelo fato da passagem de qualquer número para o seguinte sempre ser feita com a mudança de um único dígito. Assim, por exemplo quando passamos de 0111 (7 em decimal) para 1000 (8 em decimal) os quatro dígitos mudam. No código gray a passagem do 7 para 8 muda apenas um dígito pois o 7 ‚ 0100 e o 8 ‚ 1100. Na tabela abaixo temos alguns valores decimais, e os correspondentes binários e no código Gray.

Decimal

Binário

Gray

0

0000

0000

1

0001

0001

2

0010

0011

3

0011

0010

4

0100

0110

5

0101

0111

6

0110

0101

7

0111

0100

8

1000

1100

9

1001

1101

10

1010

1111

11

1011

1110

12

1100

1010

13

1101

1011

14

1110

1001

15

1111

1000

 

 No código 9876543210, temos uma decodificação de "uma saída de 10" ou seja, um único bit será 1 enquanto os demais serão 0, conforme o dígito a ser representado, conforme a seguinte tabela:

 

Tabela: código 9876543210

Decimal

9876543210

0

0000000001

1

0000000010

2

0000000100

3

0000001000

4

0000010000

5

0000100000

6

0001000000

7

0010000000

8

0100000000

9

1000000000

 

Podemos ainda citar os códigos de paridade de bit e o código de excesso 3 (XS3) que podem ser encontrados em aplicações envolvendo circuitos digitais. Finalmente, temos códigos mais complexos como o ASCII (American Standard Code for Information Interchange), muito usado em informática.

               ________________________________________