Qualquer
um que saiba ler no mundo ocidental deve saber que os computadores
digitais "pensam" em binário - em 0s e 1s.
Esta preferência significa, para começar, que os seus dados devem
ser servidos neste formato; assim, antes de processar qualquer
coisa, é necessário encontrar uma maneira de transformar o que
vai ser processado para o formato binário.
Antes, entretanto, uma pequena digressão sobre o significado da
palavra "binário".
Comumente se usa dez números, de 0 a 9,
para contar. Quando queremos escrever um número maior do que 9,
nós escrevemos quantas dezenas cabem nele, depois quantas unidades.
Para números maiores ainda, nós escrevemos a quantidade de milhares,
isto é, dez multiplicado por ele mesmo três vezes.
Ensinaram-nos a acreditar que contamos assim porque um de nossos
avós remotos era uma estrela do mar e por causa disso temos 2
x 5 = 10 dedos. Quando contamos dez coisas e usamos todos os dedos,
fazemos uma marca para indicar uma série completa e começar de
novo; deste modo contar em potências de dez - o que parece um
pouco abstrato quando explicado assim - se torna perfeitamente
natural.
Se tivéssemos nascido com oito dedos, provavelmente contaríamos
em OCTAL, reconhecendo
o 9 como 10, o 10 como 11, etc.
Para a conveniência dos humanos, a maioria dos computadores conta
em HEXADECIMAL,
que reinicia a contagem em 16, tão bem quanto
em binário: eles contam 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C,
D, E, F.
Um computador digital tem somente um dedo para contar (provavelmente
é por isso que ele se chama "digital"). Um dado do computador,
"1", é uma voltagem fixada em, digamos, 5V. Nenhum dado, ou "0",
é representado por, digamos, nenhuma voltagem.
Apesar de ter de trabalhar com tão poucos números, as regras para
fazer as contas são as mesmas. Usamos o 0 e o 1 e agora nós já
usamos todos os dedos do computador e precisamos reiniciar outra
vez, então "10" é 2 e "11" é 3. Agora estamos na situação que
estaríamos em 99: precisamos acrescentar 1 e eliminar os outros
números, de modo que 4 decimal corresponde a "100" binário. E
assim por diante.
Qualquer número que você possa escrever em decimal, você pode
escrever em binário. Você pode fazer operações aritméticas em
binário tão facilmente como em decimal. Um computador usando binário
pode representar qualquer número que possa ser escrito em decimal
e fazer operações aritméticas simples com ele. Isto significa
que ele pode fazer cálculos aritméticos complicados, visto que
qualquer operação aritmética, embora complicada, pode ser feita
por simples adição e subtração.
Até agora, tudo bem; excelente para processamento de números e
da bomba atômica, ou para deduzir o valor do seu último
cheque da sua - já devedora - conta bancária. Mas e sobre, digamos,
a inteligência do computador em reconhecer e manipular textos
e nome?
Não há dificuldade para gravar nomes na memória do computador.
Nós acabamos de ver como ele pode "pensar" que 101 significa 9.
Naturalmente, ele não pensa nada.
Ordenaram-lhe para gravar 101 e fazer certas operações com o número,
que resultarão em outro número binário que pode ser transformado
de volta em decimal. O computador não se importa com o que 101
significa para nós. Assim, podemos facilmente codificar as letras
do alfabeto com 0s e 1s. Na
prática, são utilizados códigos especiais que padronizam esses
valores.
Em subserviência ao colonialismo eletrônico dos Estados Unidos,
o conjunto de códigos mais comum é o ASCII
(American Standard Code for Information Interchange). O ASCII
usa 128 números
binários de 7 bits
de comprimento para representar os números de 0 a 9, as letras
maiúsculas e minúsculas, trinta e dois caracteres não alfabéticos
que podem ser impressos como ( ) & + =, e alguns caracteres de
controle como alimentação de linha, retorno de carro, etc. O ASCII
é pródigo, mas é eficiente? Poderíamos usar menos de sete bits
para executar um serviço?
Para responder a essas perguntas, vamos começar tratando o sistema
binário como uma ferramenta útil em vez de uma irritante perversidade
dos computadores. Um único símbolo binário - 0 ou 1 - é chamado
de "bit", uma abreviação de "binary digit". Ele
é a menor unidade de informação possível, o "sim" ou "não" para
responder a uma pergunta.
Suponha que há dois partidos competindo nas eleições da cidade
vizinha à sua e no dia da apuração você quer saber com urgência
qual foi o feliz vencedor. Peça para um amigo soltar um rojão
(desses de avisar que a polícia vai subir o morro) numa hora determinada.
Se o candidato "A" for o vencedor, ele soltará um rojão; se for
o "B" ele não deverá fazer nada. Na verdade ele está sinalizando
1 ou 0.
Uma vez que o resultado será um "booommm" ou bit, uma eleição
entre dois candidatos produz um bit de informação. Suponha agora
que você está no Jóckey e quer saber o resultado de um páreo em
que há oito corredores. Quantos rojões o seu amigo deverá soltar?
Ele poderia soltar 1 para o primeiro cavalo, 11 para o segundo
e assim por diante até 11111111 para o oitavo.
Será que esse é o melhor sistema? Suponha que você arranje um
sistema como este, onde você jogue uma espécie de jogo das Vinte
Perguntas. Sua primeira pergunta pré-preparada poderia ser "o
vencedor está entre os quatro primeiros, ou quatro últimos corredores?",
e o sinal correspondente deveria ser 0 ou 1 respectivamente.
Suponha que ele sinalize 1. Você agora sabe que o vencedor era
um dos cavalos com os números 5, 6, 7 ou 8. Faça o mesmo de novo:
"Ele está entre os dois primeiros ou os dois últimos?" Ele sinaliza
0, logo o cavalo vencedor era o 5 ou o 6. E se ele então sinalizar
0, você saberá que o vencedor foi o número 5, justamente o azarão
que levou seu dinheiro.
O seu sinal completo foi "100", ou três bits de comprimento e
40 por cento menor do que o primeiro sistema de sinalização. O
fato de existirem três bits nos mostra quanta informação gera
uma corrida de oito cavalos.
Suponha que você tenha, digamos, oito bits. Com quantos cavalos
podemos competir? Bem, três bits dá para 8 cavalos, porque cada
bit decide uma pergunta de dupla resposta e 2 x 2 x 2 = 8. Assim,
oito bits responde a oito perguntas e indicará o vencedor em 2
x 2 x 2 x 2 x 2 x 2 x 2 = 256 competidores. O que é uma grande
surpresa. Você poderia pensar que precisaria muito mais bits do
que isso.
Olhando as coisas como resultados de jogos com respostas "sim"
ou "não" é que repousa toda a teoria da informação. Ela foi inventada
por Claude E. Shannon
e foi, como a teoria da relatividade, uma das grandes descobertas
do século 20.
O jogo das Vinte Perguntas tem uma interessante
implicação quando visto sob a luz da teoria da informação. Para
quem não conhece, neste jogo os jogadores tentam adivinhar uma
palavra, ou uma frase curta - como "a
orelha esquerda do Papa" - fazendo um máximo
de vinte perguntas que só podem ser repondidas com "sim" e "não".
Provavelmente gerações de jogadores vitorianos acharam que dezenove
perguntas era muito pouco e tornava o jogo muito difícil, enquanto
que vinte e uma perguntas era muito e tornava o jogo fácil demais.
Podemos supor que com vinte perguntas, e o tradicional começo
pelo esclarecimento de "animal, vegetal ou mineral", as coisas
eram descobertas.
Vinte perguntas com respostas "sim" ou "não" correspondem a vinte
bits de informação. Some outros dois bits para animal, vegetal
ou mineral. A existência real deste entretenimento nos diz que
uma árvore com vinte e dois galhos nos leva a cada conceito que
passa pela cabeça de uma pessoa com educação média.
Isto significa que existem mais ou menos quatro milhões e meio
de idéias em circulação, atualmente. Seria interessante saber
se os habitantes das selvas, que provavelmente são carentes de
estímulos mentais, jogam Quatorze Perguntas (16.384 idéias).
Voltando ao ASCII, quantos bits precisamos realmente para representar
os numerais? Se nós contássemos somente de 0 a 7 poderíamos trabalhar
com três bits. Mas para representar 8 e 9 é preciso um bit extra
- o que é irritante, visto que 4 bits podem representar até o
15.
É
por isso que os computadores trabalham melhor em hexadecimal,
simplesmente para usar quatro bits com eficiência. De fato, eles
herdaram essa característica dos grandes computadores "mastigadores'
de números, cujos projetistas se fixaram anos atrás num padrão
de oito bits, porque ele poderá conter ou o conjunto total de
todos os símbolos de um teclado que se possa provavelmente necessitar
- ou dois numerais.
Um conjunto de oito bits é básico para a computação e é chamado
de "byte" - uma bela palavra que sugere uma porção de bits. Uma
unidade de quatro bits é comumente chamada de nibble.
|