O Sistema Binário
O sistema binário ou de base 2 é um sistema de numeração posicional em que todas as quantidades se representam com base em dois números, ou seja, 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).3 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, ainda, é chamado de nibble.
Um processador é formado por milhares de blocos lógicos complexos, formados por portas lógicas básicas, e o funcionamento destas está amparado por um postulado fundamental a eletrônica digital que determina que um circuito opere apenas com 2 níveis de tensão bem definidos. Em um circuito digital TTL (Transistor Transistor Logic), os dois níveis de tensão padronizados são 0V (zero volt) e 5V (cinco volts). Ao projetar um sistema digital, ao invés de trabalhar com níveis de tensão trabalha-se com níveis lógicos, então, no caso do circuito TTL, 0V será representado por “0” e 5V será representado por “1”, e os níveis de tensão entre eles serão ignorados, ou seja, adotar-se-à uma faixa até a qual será considerado nível lógico zero, e a partir dela, nível lógico 1. Neste caso, de 0V a 2,5V temos “0”, e a partir daí até 5V temos “1”.
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).4 Toda a electrónica digital e computação está baseada nesse sistema binário e na lógica de Boole, que permite representar por circuitos electró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 a.C.,5 representando os números de 1 a 8 com a sequência (usando símbolos modernos 001, 010, 011, 100, 101, 110, 111 e 1000.6
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.7 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 Yong 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.
Códigos Binários
A 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.
Decimal Codificado em Binário
O sistema numérico decimal é fácil de 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".
Os 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érico binário e decimais.
Tal como a notação científica decimal existe notação científica binária. Vejamos parte do código duma aplicação de código aberto que suporta esta funcionalidade:...
... if(decimal>=0){ sN=log10(decimal)/log10(2.0); sN1=quo(sN); sN2=pot(2.0,multi(sN),1); } else{ if(decimal<0){ decimal=decimal*-1; sN=log10(decimal)/log10(2.0); sN1=quo(sN); sN2=pot(2.0,multi(sN),1)*-1; decimal=decimal*-1; } } ...
Ao pegarmos no valor em decimal podemos facilmente convertê-lo para binário, mas a numeração binária é extensa na medida que se obtém muitos dígitos na finalização da conversão. Com isto torna-se possível obter o valor numa forma mais legível. Então temos a seguinte ordem de ações para obter um valor em notação científica binária:
Caso o valor seja inferior a zero:
É desnecessário colocar o valor em notação binária se sN1 for menor ou igual a 5 e maior ou igual a -4 ou quando o valor decimal a converter é igual a 0 pois são valores de leitura legível.
Esta forma de conversão foi desenvolvida e testada por um desenvolvedor de software de código-aberto, sendo que não está patenteada.
Tal como foi feito para o sistema binário, poderemos aplicar as mesmas regras para outros sistemas de numeração como octal e hexadecimal, base logarítmica 8 e 16 respetivamente. Para a conversão também se teria de usar respetivamente 8 e 16 para os sistemas de numeração mencionados.
Código ASCII
Ver artigo principal: ASCII
O "American Standard Code for Information Interchange" comumente referido como ASCII – também chamado ASCII completo, ou ASCII estendido –, é uma forma especial de código binário que é largamente utilizado em microprocessadores e equipamentos de comunicação de dados.8
Um novo nome para este código que está se tornando popular é "American National Standard Code for Information Interchange" (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.