sábado, 26 de abril de 2008

O Sistema binário

O sistema binário é um sistema de numeração posicional em que todas as quantidades se representam utilizando como base o número dois, com o que se dispõe das cifras: zero e um (0 e 1).

Os computadores digitais trabalham internamente com dois níveis de tensão, pelo que o seu sistema de numeração natural é o sistema binário (aceso, apagado). Com efeito, num sistema simples como este é possível simplificar o cálculo, com o auxílio da lógica booleana. Em computação, chama-se um dígito binário (0 ou 1) de bit, que vem do inglês Binary Digit. Um agrupamento de 8 bits corresponde a um byte (Binary Term). Um agrupamento de 4 bits é chamado de nibble.

O sistema binário é base para a Álgebra booleana (de George Boole - matemático inglês), que permite fazer operações lógicas e aritméticas usando-se apenas dois dígitos ou dois estados (sim e não, falso e verdadeiro, tudo ou nada, 1 ou 0, ligado e desligado). Toda eletrônica digital e computação está baseada nesse sistema binário e na lógica de Boole, que permite representar por circuitos eletrônicos digitais (portas lógicas) os números, caracteres, realizar operações lógicas e aritméticas. Os programas de computadores são codificados sob forma binária e armazenados nas mídias (memórias, discos, etc) sob esse formato.


História


O matemático indiano Pingala apresentou a primeira descrição conhecida de um sistema numérico binário no século III aC.

Um conjunto de 8 trigramas e 64 hexagramas, análogos a números binários com precisão de 3 e 6 bits, foram utilizados pelos antigos chineses no texto clássico I Ching. Conjuntos similares de combinações binárias foram utilizados em sistemas africanos de adivinhação tais como o Ifá, bem como na Geomancia do medievo ocidental.

Uma sistematização binária dos hexagramas do I Ching, representando a sequência decimal de 0 a 63, e um método para gerar tais sequências, foi desenvolvida pelo filósofo e estudioso Shao Yong no século XI. Entretanto, não há evidências que Shao Wong chegou à aritmética binária.

O sistema numérico binário moderno foi documentado de forma abrangente por Gottfried Leibniz no século XVIII em seu artigo "Explication de l'Arithmétique Binaire". O sistema de Leibniz utilizou 0 e 1, tal como o sistema numérico binário corrente nos dias de hoje.

Em 1854, o matemático britânico George Boole publicou um artigo fundamental detalhando um sistema lógico que se tornaria conhecido como Álgebra Booleana. Seu sistema lógico tornou-se essencial para o desenvolvimento do sistema binário, particularmente sua aplicação a circuitos eletrônicos.

Em 1937, Claude Shannon produziu sua tese no MIT que implementava Álgebra Booleana e aritmética binária utilizando circuitos elétricos pela primeira vez na história. Intitulado "A Symbolic Analysis of Relay and Switching Circuits", a tese de Shannon praticamente fundou o projeto de circuitos digitais.

Operações com binários

Binários a decimais

Dado um número N, binário, para expressá-lo em decimal, deve-se escrever cada número que o compõe (bit), multiplicado pela base do sistema (base = 2), elevado à posição que 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 número real representado. Exemplo:

1011(binário)

1 × 23 + 0 × 22 + 1 × 21 + 1 × 20 = 11

Portanto, 1011 é 11 em decimal

Decimais em binários

Decimais inteiros em binários

Dado um número decimal inteiro, para convertê-lo em binário, basta dividi-lo sucessivamente por 2, anotando o resto da divisão inteira:

12(dec)   ->    bin

12 / 2 = 6 Resta 0
06 / 2 = 3 Resta 0
03 / 2 = 1 Resta 1
01 / 2 = 0 Resta 1

12(dec) = 1100(bin)

Observe que os números devem ser lidos de baixo para cima: 1100 é 12 em decimal.

Existe um método muito simples para converter binário em decimal, e vice-versa.

 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
0 0 0 0 1 0 1 0 = 10 (2+8=10)
0 0 0 1 1 0 0 0 = 24 (8+16=24)
1 1 0 0 0 0 0 0 = 192 (64+128=192)
1 0 1 1 1 0 1 0 = 186 (2+8+16+32+128=186)

Decimais fracionários em binários

Exemplo I
0.562510

Parte inteira = 0 10 = 02
Parte fracionária = 0.562510
Multiplica-se a parte fracionária por 2 sucessivamente, até que ela seja igual a zero ou cheguemos na precisão desejada.

fração x 2 =  vai-um + fração seguinte
0.5625 x 2 = 1 + 0.1250
0.1250 x 2 = 0 + 0.2500
0.2500 x 2 = 0 + 0.5000
0.5000 x 2 = 1 + 0.0000 <-- nesta linha a fração zerou, finalizamos a conversão

Anotando a seqüência de vai-um (carry) na ordem de cima para baixo, temos: 1001
Portanto, 0.562510 = 0.10012

No entanto, é mais comum nunca zerarmos a fração seguinte da multiplicação.
Neste caso, devemos parar as multiplicações quando atingirmos uma certa precisão desejada.

Exemplo II
67.57510

Parte inteira = 6710 = 10000112
Parte fracionária = 0.5752

fração x 2 =  vai-um + fração seguinte
0.5750 x 2 = 1 + 0.1500
0.1500 x 2 = 0 + 0.3000
0.3000 x 2 = 0 + 0.6000 <--- esta fração e suas subseqüentes serão repetidas em breve. 0.6000 x 2 = 1 + 0.2000 0.2000 x 2 = 0 + 0.4000 0.4000 x 2 = 0 + 0.8000 0.8000 x 2 = 1 + 0.6000 <--- a partir daqui repetimos a fração 0.6000 e suas subseqüentes 0.6000 x 2 = 1 + 0.2000

Ou seja, entramos em um ciclo sem fim. Escolhemos uma precisão e finalizamos o processo quando esta precisão for atingida, então na ordem de cima para baixo, temos: 100100112

Soma de Binários

0+0=0
0+1=1
1+0=1
1+1=10, ou seja 0 e vai 1* (para somar ao digito imediatamente à esquerda)

Para somar dois números binários, o procedimento é o seguinte:

Exemplo 1:

     *
1100
+ 111
-----
= 10:P

Explicando: Os números binários são base 2, ou seja, há apenas dois algarismos: 0 (zero) ou 1 (um). Na soma de 0 com 1 o total é 1. Quando se soma 1 com 1, o resultado é 2, mas como 2 em binário é 10, o resultado é 0 (zero) e passa-se o outro 1 para a "frente", ou seja, para ser somado com o próximo elemento, conforme assinalado pelo asterisco.

Exemplo 2:

    **
1100
+ 1111
-----
= 11011

Explicando: Nesse caso acima (exemplo 2), na quarta coluna da direita para a esquerda, nos deparamos com uma soma de 1 com 1 mais a soma do 1 ( * ) que veio da soma anterior. Quando temos esse caso (1 + 1 + 1), o resultado é 1 e passa-se o outro 1 para frente.

Subtração de Binários

0-0=0
0-1=1 e vai 1* para ser subtraido no digito seguinte
1-0=1
1-1=0

Para subtrair dois números binários, o procedimento é o seguinte:

      * ***
1101110
- 10111
-------
= 1010111

Explicando: Quando temos 0 menos 1, precisamos "pedir emprestado" do elemento vizinho. Esse empréstimo vem valendo 2 (dois), pelo fato de ser um número binário. Então, no caso da coluna 0 - 1 = 1, porque na verdade a operação feita foi 2 - 1 = 1. Esse processo se repete e o elemento que cedeu o "empréstimo" e valia 1 passa a valer 0. Os asteriscos marcam os elementos que "emprestaram" para seus vizinhos. Perceba, que, logicamente, quando o valor for zero, ele não pode "emprestar" para ninguém, então o "pedido" passa para o próximo elemento e esse zero recebe o valor de 1.

Multiplicação de Binários

A multiplicação entre binários é similar à realizada com números decimais. A única diferença está no momento de somar os termos resultantes da operação:

          1 0 1 1
x 1 0 1 0
---------
0 0 0 0
+ 1 0 1 1
+ 0 0 0 0
+ 1 0 1 1
---------------
= 1 1 0 1 1 1 0
*


Perceba que na soma de 0 e 1 o resultado será 1, mas na soma de 1 com 1, ao invés do resultado ser 2, ele será 0 (zero) e passa-se o 1 para a próxima coluna, conforme assinalado pelo asterisco. Nota que se a soma passar de 2 dígitos, deve-se somar o número em binário correspondente ( ex. 4 = 100, 3 =11).
            1 1 1
x 1 1 1
---------
1 1 1
+ 1 1 1
+ 1 1 1
---------------
= 1 1 0 0 0 1


No caso, a terceira coluna a soma dá 4 (com mais um da anterior), que adiciona um "1" duas colunas depois (100).

Divisão de Binários

Essa operação também é similar àquela realizada entre números decimais:

   110 |__10__
- 10 11
--
010
- 10
--
00

Deve-se observar somente a regra para subtração entre binários. Nesse exemplo a divisão de 110 por 10 teve como resultado 11.




Um comentário:

José disse...

Qual é a fonte dos acontecimentos históricos?

Grato desde já!