Como computadores calculam

Afinal os computadores contam até basicamente o infinito, mas como isto é possível? e como funciona?

Para começar o assunto vamos levantar 3 tópicos sendo eles: binário, limite computacional e RAM.

Tópico 1: Binário

Os 10 tipos de pessoas

No mundo computacional existem 10 tipos de pessoas, a que sabem e as que não sabem binário.

Basicamente binário é bem ligado a sua CPU, digamos que você viva nos anos 1970 e sua CPU seja de 4 ou 8 bits., então pela limitação da sua CPU o maior número que pode contar é:

2^4 – 1 ou 2^8 – 1, respectivamente.

para calcular binário é bem simples, só existe 1 ou 0, logo para calcular 1001 você faz:

(1 x 2^3) + (0 x 2^2) + (0x 2^1) + (1x 2^0)

ou de maneira mais simples:

(2^3) + 1

Pois o primeiro dígito é sempre 0 ou 1, e todos os zeros são irrelevantes.

Honestamente isto é uma piada, pois na época contar até 15 ou 255 é impossível fazer qualquer coisa, mas e aí, como existia 256 ou mais?

Caso você saiba um pouco de computadores já deve imaginar a resposta, agora próximo tópico.

Tópico 2: Limite computacional

O simples complicado.

Basicamente existe métodos simples até de mais para fazer um calculo superior a 255 em um sistema 8bits, e isto é linguagem de programação, mas isto vai custar caro ou melhor, esquentar.

Primeiramente, digamos que eu quero calcular 100 + 300, como isto ocorre? A resposta é bem simples, a linguagem de programação (se não for assembly), vai lidar com isto! bem… tecnicamente. em uma linguagem de programação o limite muito provavelmente vai ainda ser 255, se a linguagem em quentão não der funcionalidade, agora em C por exemplo, existe o int, que passa deste limite, e a resposta é bem simples do como e por que: ele aloca memória na RAM.

Para aumentar o limite do número você deve implementar seu próprio algoritmo, digamos que eu queira que em pseudocódigo, passe do limite em uma soma a lógica vai ser mais ou menos esta:

alocar número 0 como x1
alocar número 0 como x2
alocar lista como valores
alocar caracteres como entrada

mostrar "inserir valor do x1 seguido do x2"
:loop
alocar teclas pressionadas do teclado em entrada
se entrada não for enter:
     volta ao :loop

alocar 0 em sobra
:transformar
para valor1 e valor2 dentro de (x1, x2):
     passar digito por digito para valores


:mostrar
mostrar vazio
para digito1 e digito2 em valores:
     alocar número 0 como próximo
     somar digito1, digito2 e próximo
     se soma maior que 9:
          adicionar 1 ao próximo
     mostrar primeiro digito de soma na frente do anterior
mostrar próximo

Em um breve resumo, este código transformou uma lista de caracteres alocadas na memória em uma lista de valores, sendo eles o valor x1 e o valor x2, após isto ele pega estes valores e os somo de trás pra frente, se for maior que nove, passa 1 para o próximo digito enquanto mostra o último digito da soma, por exemplo, se a soma for: 357 + 125 ele vai somar primeiro 7+5 que da 12, logo, vai mostrar apenas 2, utilizando o 1 na próxima soma. até terminar e conseguir mostrar um número inteiro na tela.

Tópico 3 RAM:

Desliguei e esqueci.

A RAM é essencial para o código anterior, é ela que é capaz de alocar variáveis na memória. Basicamente cada comando “alocar” leva os dados direto a RAM, apenas cálculos usam a CPU, não alocação, logo pode existir uma lista de números de 0 a 9 que excedem o infinito, mas não o mesmo em números diretos.

Lembrando que tudo digitado no teclado é entendido como letra, e não número. para os valores alocados em x1 e x2 serem um número precisa primeiro transformar, feito após a linha “:mostrar”, quando soma digito por digito.

pois por exemplo cada letra tem um valor de 0 a 255 no mundo computacional, sendo 0 nulo e 255 um símbolo ( ÿ ), a CPU só consegue usar isto por causa da RAM, que aloca o texto por completo e a CPU apenas compara.

Conclusão:

Computadores são bem complicados, porém não há uma linguagem que não se adapte a qualquer algoritmo, tudo que o computador precisa é poder computacional, refrigeração e um bom programador, caso tenham dúvidas, entrem no nosso fórum forum.bitsnovos.com

Fontes usadas:

Binary to Decimal Conversion – an overview | ScienceDirect Topics (tópico 1)

ASCII table – Table of ASCII codes, characters and symbols (ascii-code.com) (tópico 3) – valores dos caracteres em binário

* tópico 2, e conteúdo sobre a RAM contida no tópico 3 é de minha autoria, não há fontes.


Publicado

em

por

Comentários

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *