Olá pessoas dessa internet, para quem está chegando aqui agora, este é o segundo artigo de uma série que estou fazendo para falar sobre os fundamentos da computação, recomendo ler o primeiro sobre portas lógicas. E para quem já leu o primeiro artigo, dá um pulinho lá porque eu fiz uma revisão no artigo, recomendo bastante dar uma olhada 😊

Vamos nos aprofundar um pouco mais e explorar alguns conceitos de matemática e também da história humana.

A matemática veio da necessidade de contar e medir da raça humana – quantos animais a Maria cuida, quantos dias até o próximo solstício… Com o tempo e a expansão humana, povos antigos criaram vários sistemas de numeração para o seu dia a dia. Jogos como Grand Theft Auto V, Call of Duty: Black Ops III, Dragon Quest XI são exemplos de uso do sistema numeral que os romanos usavam, e o I Ching, um antigo texto chinês, tem raízes em representações binárias.

Porém, não somente as antigas civilizações usavam outros sistemas numéricos. As horas de um dia são divididas entre 12 horas do período da manhã e 12 horas do período da tarde, ou uma dúzia de ovos. Na língua francesa ainda existem resquícios de um sistema com base vigesimal (20), por exemplo, o número 80 se diz quatre-vingts (quatro vintes), e um dos mais recentes é o Braille, que também tem raízes em representações binárias.

Nos dias atuais, utilizamos a representação decimal, e o motivo é bem simples: a média de dedos em mãos humanas são incríveis 10 dedos, sendo assim fica mais fácil contar usando somente as mãos.

☝️ + ☝️ = ✌️#

Essa representação em base 10 é posicional, ou seja, a posição em que os dígitos são “desenhados” muda a quantidade que se está representando. 70 representa dez vezes mais que 07, daí vem o ditado popular “zero à esquerda”. Na escola, aprendemos as casas decimais – unidades, dezenas, centenas… Elas servem para representar qual é a posição desse dígito.

DezenaUnidade
    7   0     
    0   7     

E em cima dessa ordem existe uma fórmula matemática que converte um número de qualquer base para decimal. Para facilitar:

  • Dígito: Símbolo que representa uma quantidade única.   Ex.: 1, 2, 3, 4, 5, 6, 7, 8, 9, 0
  • Número: Dígitos organizados em ordem de posição.   Ex.: 10, 144, 999, 42, 37, 0x8A6C, 0b101010
  • Base: Quantidade máxima de dígitos que pode ser representada.   Ex.: binário (0b) 2, decimal 10, hexadecimal (0x)
  • Índice: A magnitude do dígito na posição.   _Ex.: 10, o 1 em 10 tem Índice 1 e o 0 tem Índice 0 (é meio contraintuitivo, mas faz sentido).   Em outras palavras, o índice é a posição da direita para a esquerda, começando em 0.

A fórmula é bem simples: (d)ígito × (b)ase(i)ndice. No exemplo que estamos fazendo, esta é a fórmula para converter 70 em decimal… para 70 em decimal. 7 × 101 + 0 × 100 = 70

Interactive

Quando falamos de números dessa forma, fica mais fácil representar o binário, que nada mais é que a quantidade que pode ser representada pela fórmula d × 2i.

Interactive

E essa forma de representar quantidades também pode ser manipulada com operações matemáticas. A adição 25 + 17 é resolvida de modo parecido com isso.

1
2 5
1 7
--- +
4 2

No exemplo acima, temos alguns elementos que precisam ser destacados:

  1. Um dígito só pode ser somado com outro dígito que estiver no mesmo índice.
  2. Quando a soma não puder ser representada com apenas um dígito, o menor índice é mantido como resultado, e o resto é enviado para o próximo índice.
  3. O resultado de uma soma será sempre a soma dos dígitos do índice + o resto que veio do dígito no índice anterior.

Com esses mesmos passos, podemos aplicar a soma em qualquer base.

    1 1 1       |  1      |  
1 0 0 0 1 1     |  2 5    |  1 9
0 0 0 1 1 1     |  1 7    |  1 1
------------ +  |  --- +  |  --- +
1 0 1 0 1 0     |  4 2    |  2 A 

Cálculo de 25 + 17 em bases Binária, Decimal e Hexadecimal

Interactive

Agora que já nos conhecemos, como podemos fazer para o computador nos conhecer também?

Brincando de tradução#

Lembrando do artigo anterior, vamos isolar a soma de dois dígitos em tabelas. A primeira, vamos olhar para o resultado apenas. Temos esta tabela que se assemelha muito com a tabela da porta OR, exceto por essa pequena mudança no final.

Resultado
?01
001
110
OR
01
001
111

Para isso, podemos combinar o resultado das portas que já vimos anteriormente em um só circuito chamado “OU Exclusivo” ou “XOR”.

Interactive

Agora, vamos olhar também para a tabela do resto da nossa soma e se percebe que é uma cópia exata da porta AND.

Resto
?01
000
101
AND
01
000
101

E assim como o Capitão Planeta, “Pela união dos seus poderes”, nós vamos conseguir fazer a operação de soma de dois dígitos em binário, e esse componente é chamado de “Somador” ou “Adder”.

Interactive

Com essa combinação de portas lógicas, um computador já consegue fazer as incríveis somas de: 0 + 0, 1 + 0, 0 + 1, 1 + 1, mas, além disso, ele consegue também dizer quanto que houve de resto da soma. E quando combinados vários ADDERs, a gente consegue fazer uma soma de números mais complexos como o 42, mas essa nós vamos ver no próximo artigo.

Por hoje é só isso, pessoal.

Referências