Bits & Bytes
Conheça o significado das duas palavras mais importantes da programação dos computadores

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.


No club TILT tem mais...
Quer saber mais sobre esse assunto, conhecer mais técnicas, ver fontes e programação? Siga os links para o club TILT. Se ainda não é assinante, clique aqui e saiba como assinar.

Números , Lógica e Vida Real e Computando palavras

 
online