Calculadoras – Parte IV

Na primeira parte compreendemos o funcionamento da tábua de contagem e do ábaco, na segunda parte conhecemos a primeira calculadora mecânica, a pascalina, e na terceira parte analisámos as propostas inovadoras de Leibniz que vieram a culminar nas calculadoras mecânicas “modernas” (dos séculos XIX e XX). Nesta quarta e última parte vamos dar um salto histórico e tecnológico para as calculadoras electrónicas. Iremos também dar um salto no nível de detalhe descritivo, uma vez que irei omitir imensos detalhes técnicos sobre a electrónica envolvida.

A primeira calculadora electrónica foi criada no princípio da década de 60 do século XX. Na década seguinte já havia calculadoras de bolso, uma revolução que beneficiou do desenvolvimento dos primeiros microprocessadores da Intel. Um microprocessador é um circuito electrónico “integrado” que permite produzir cálculos binários, isto é, “processar”, um dado sinal binário que entre no circuito de acordo com certas instruções pré-memorizadas no circuito, dando origem a um sinal de saída que é o resultado da aplicação das instruções ao sinal de entrada. O que é um sinal binário? Já lá vamos. Em artigos futuros deverei falar em maior detalhe sobre a electrónica e a Física em causa, nomeadamente em circuitos electrónicos, transístores (o componente base dos microprocessadores) e os seus precursores, os tubos de vácuo (ou válvulas termiónicas). Aqui iremos antes observar o que é possível fazer com essa electrónica.

Uma calculadora de bolso tem quatro partes essenciais:

  • Teclado (e circuito interno)
  • Microprocessador
  • Ecrã
  • Pilha (ou painel solar)

O teclado e o circuito por baixo dele permitem ao utilizador inserir os números e as operações que deseja. Ao ser-se introduzido um número, este é traduzido em representação binária (já lá vamos), é guardado numa memória interna* e é apresentado no ecrã (mostrador). Os mostradores mais comuns têm apenas 7 pixels por dígito, isto é, 7 “lâmpadas” que se acendem de forma pré-programada de acordo com o dígito pressionado pelo utilizador.

A pilha serve apenas para alimentar o ecrã e o circuito. (Recordem o que é e como fazer uma pilha aqui.)

No microprocessador é onde acontece a “magia”.

Primeiro, o número inserido no sistema decimal (base 10) é transformado no sistema binário (base 2). Que sistemas são estes e porque é que a calculadora faz isto?

O sistema decimal é a convenção numérica que usamos para representar números através de 10 algarismos diferentes (0,1,2,3,4,5,6,7,8,9). Com estes 10 algarismos conseguimos representar qualquer número. Não é uma forma única nem especial de representar números, é uma mera convenção. Os Maias, por exemplo, representavam os seus números assim:

Com apenas dois algarismos, o 0 e o 1, o sistema binário é o mais simples de todos. (Não é possível ter um sistema apenas com um só símbolo, pois não seria possível distinguir o 0 do 1. Ou distinguir o 0 da ausência de número.)

Há 10 tipos de pessoas, aquelas que sabem binário e aquelas que não percebem esta piada.

O 10 em sistema binário é o mesmo que 2 no sistema decimal. Porquê? Porque o símbolo 2 não existe no sistema binário. Tal como não temos um algarismo para representar dez no sistema decimal e como tal usamos dois algarismos, o mesmo acontece no sistema binário. 10 no sistema decimal representa uma dezena mais zero unidades. 10 no sistema binário representa um dois mais zero unidades. Assim, enquanto que no sistema decimal temos, da direita para a esquerda num número, o algarismo das unidades, o algarismo das dezenas, o algarismo das centenas, o algarismo dos milhares… No sistema binário temos o algarismo das unidades, o algarismo do dois, o algarismo do quatro, o algarismo do oito…

Usando potências, o número genérico representado pelos algarismos a, b, c e d na base decimal é igual à seguinte decomposição:

dcba = a\times10^0+b\times10^1+c\times10^2+d\times10^3

Ou seja,

dcba = a+b\times10+c\times100+d\times1000

Na base 10, as letras abc e d podem representar qualquer algarismo de 0 a 9.

Na base binária podemos fazer algo semelhante:

dcba = a\times2^0+b\times2^1+c\times2^2+d\times2^3

Ou seja,

dcba = a+b\times2+c\times4+d\times8

Neste caso, como a base é 2, as letras abc e d só podem ser 0 ou 1.

Como “traduzir” 45 de base decimal para base binária? Convém recordar algumas potências de dois:

2^1 = 2 \quad 2^2 = 4 \quad 2^3=8 \quad 2^4 = 16 \quad 2^5 = 32 \quad 2^6 =64

Reconhecemos que 45 “contém” um 32, mas não um 64 (logo iremos precisar de um número com 6 algarismos em base binária). Depois basta continuar de forma sequencial: já sabemos como representar 32 unidades do 45, falta representar 45-32=13. Como 13 é menor que 16, mas maior que 8, logo sabemos que o 45 contém um 32 e um 8. Ficam a falta 45-(32+8)=5. Como é claro, 5 = 4+1. Assim:

45=1+0\times2+1\times4+1\times8+0\times16+1\times32

Isto significa que o 45 é igual a 101101 em binário. E 46? Basta somar uma unidade: 101110.

Para passar de binário para decimal usa-se a mesma “fórmula”. Por exemplo, façamos a tradução do número binário 1010 para decimal:

0\times1+1\times2+0\times4+1\times8=0+2+0+8=10

Por um momento poderá pensar-se que o sistema binário é pouco conveniente porque usa imensos algarismos para representar números relativamente pequenos… É verdade, mas para uma calculadora (ou computador) isso não é um problema.

Os circuitos electrónicos usam o sistema binário para representar números porque é muito mais fácil representar dois algarismos diferentes, do que dez. O zero pode ser representado pela ausência de corrente eléctrica, o um pode corresponder à presença de uma corrente. Ou seja, basta um interruptor para definir um algarismo e um conjunto de interruptores para representar um número.

Como é que os circuitos electrónicos fazem isso? Como disse, não irei entrar em detalhes da Física. De forma genérica, usa-se uma diferença de potencial eléctrico (ou corrente) para representar o 0 ou 1. Por exemplo, com transistores é comum usar tensões eléctricas inferiores a 0.4 volts para representar o 0 e superiores a 2.6 volts para representar o 1.

Até aqui dei-vos uma noção de como os números são representados na calculadora, mas nada disse sobre como as operações matemáticas são feitas. Para as implementar usam-se “portas lógicas” (logic gates). Uma porta lógica recebe um ou mais sinais de entrada (daí ser uma “porta”) e devolve um sinal de saída de acordo com uma dada “lógica”. Os sinais que estamos aqui a falar são sinais eléctricos que correspondem a bits, ou seja, números binários, 0s ou 1s. A lógica em causa é a lógica booleana (em homenagem ao matemático George Boole), a lógica das “tabelas de verdade” que alguns de vós poderão ter aprendido em aulas de Filosofia.

Há quatro portas lógicas fundamentais: AND (e), OR (ou), NOT (negação) e XOR (ou disjuntivo). Não irei entrar em detalhes sobre as ditas tabelas de verdade (podem ver a página da wikipedia sobre portas lógicas). A porta NOT é a mais simples: transforma um 0 num 1 e um 1 num 0. Ou seja, “nega” o sinal de entrada e devolve o contrário como sinal de saída. As outras três portas comparam dois sinais. Por exemplo, no caso do AND verifica-se se os sinais de entrada são ambos iguais a 1. Se sim, o sinal de saída é 1. Se não, é 0.

O importante é que com estas portas lógicas** somos capazes de definir todas as operações matemáticas em números binários (recordo que uma multiplicação pode ser traduzida em somas e uma divisão em subtracções). Consideremos a soma, a título de exemplo.

Tal como nas calculadoras mecânicas que estudámos na segunda e terceira partes, as operações na calculadora electrónica também são feitas em cada dígito individualmente. Num sistema binário, só há quatro somas possíveis ao nível de um algarismo: 0+0=0, 0+1=1+0=1 e 1+1=10. Se nos focarmos só no dígito mais à esquerda (isto é, desprezando o 10 no 1+1), a adição corresponde à tabela de verdade da porta lógica XOR, o ou disjuntivo, que tem como sinal de saída 1 se os sinais de entrada forem diferentes entre si, e 0 se forem iguais. Como é claro, isto não chega, porque precisamos de distinguir o resultado 0+0=0, do resultado 1+1=10. O 1 tem que ser “transportado” para a soma dos dígitos à esquerda, da mesma forma que quando fazemos a soma 14+9, somamos o 9 ao 4, dá 3 e “vai um” a somar ao algarismo da esquerda: 14+9 = 9+4 +10=3+10+10=23. Como no caso binário ou se transporta 0 ou 1, sendo que só se transporta 1 se ambos os sinais de entrada forem 1, isto significa que precisamos de uma porta lógica AND, cujo sinal de saída é apenas 1 se ambos os sinais de entrada forem 1.

Em suma, a soma de dois bits é feita usando um XOR para representar a unidade resultante e um AND para representar a hipótese de “transporte” de uma unidade para o dígito à esquerda. O que acabei de descrever é um half adder – um circuito “meio somador”. Eis a representação técnica do que acabei de descrever (onde sum = soma; carry = “transporte”, o “vai um”):

O A e B são os sinais de entrada que podem representar 0 ou 1. O SUM e o CARRY são os sinais de saída das portas XOR e AND, respectivamente.

Usando outras portas lógicas noutras combinações é possível fazer-se tudo o que se quiser aos sinais de entrada. Por outras palavras, com algum engenho é possível obter qualquer operação matemática. Para os mais interessados deixo um desafio: descubram uma combinação de portas lógicas que vos permita subtrair.

“Tenho novidades para ti, amigo, foste substituído por uma calculadora de bolso.”
A miniaturização da tecnologia tem sido um aspecto crucial do progresso. Fazer mais pequeno significa por norma conseguir diminuir o preço e o consumo energético, bem como ter a possibilidade de criar outras tecnologias que façam uso de muitas dessas miniaturas (onde o computador é o exemplo paradigmático).

 

*Como funciona uma memória? É uma boa questão que espero vir a abordar num artigo futuro.
**Se tiverem interesse que faça um artigo sobre portas lógicas, lógica booleana, etc., peçam nos comentários.

Deixe um comentário

O seu endereço de email não será publicado.

Este site utiliza o Akismet para reduzir spam. Fica a saber como são processados os dados dos comentários.

Verified by MonsterInsights