Wesley Damasceno

~$ sudo ./programmer

Entendendo como funciona o sistema binário

23 jun 2025
#cc#sistema-binario

Existem diversos sistemas númericos para fazer operações no geral. O que mais usamos no dia a dia é o decimal que tem base 1010, assim cada dígito consegue representar dez valores diferentes de 00 a 99.

Ex: Como é formado o número 874?

  • 8 centenas (81028 * 10^2)
  • 7 dezenas (71017 * 10^1)
  • 4 unidades (41004 * 10^0)

E quando falamos do sistema binário, ele tem base 22, sendo assim um sistema bem simples para um computador usar, já que existe apenas dois dígitos possíveis, 00 e 11.

Nota

Podemos chamar um dígito binário de bit.

O computador entende binário a grosso modo como "Ligado" e "Desligado", isso porque internamente é isso que acontece, milhões de interruptores chamado de Transistores que ficam ligando e desligando o tempo todo em diversas combinações possíveis.

Essa é uma maneira "simples" do computador processar diversos tipos de informações e operações, dados computados mesmo.

Convertendo números binários no papel

Um número binário é formado por uma potência de 2, ex: 222^2, 212^1, 202^0...

Pra entender melhor, vamos usar o exemplo das lâmpadas, desligada vale 00 e ligada vale 11:

De acordo com as lâmpadas, temos um número binário 0011000100110001. Mas o que isso significa?

Tudo vai depender do contexto desse binário, porque a representação dele pode ser a mesma em diversos sistemas.

Mas vamos imaginar que é apenas um contexto decimal, quero passar de binário para decimal, podemos fazer o cálculo dessa maneira:

  1. De trás pra frente, vamos chamar o dígito de NN e multiplicar o NN pela base 22 com a potência valendo a posição de NN iniciando em 00. Sabendo disso vamos guardar o resultado de cada operação:
  • 120=11 * 2^0 = 1
  • 021=00 * 2^1 = 0
  • 022=00 * 2^2 = 0
  • 023=00 * 2^3 = 0
  • 124=161 * 2^4 = 16
  • 125=321 * 2^5 = 32
  1. Agora vamos somar os resultados das operações, 1+16+32=491 + 16 + 32 = 49

Isso significa que o binário 0011000100110001 em decimal, vale 4949.

Mas... é o inverso? Como fazemos?

De decimal para binário dividimos cada dígito por 22, anotamos o resto e dividimos o quociente por 22 de novo até o quociente ser 00. Após isso o valor em binário vai ser a sequência de restos invertida.

  • 49/2=149 / 2 = 1 (Quociente é 2424 e o resto é 11)
  • 24/2=024 / 2 = 0 (Quociente é 1212 e o resto é 00)
  • 12/2=012 / 2 = 0 (Quociente é 66 e o resto é 00)
  • 6/2=06 / 2 = 0 (Quociente é 33 e o resto é 00)
  • 3/2=13 / 2 = 1 (Quociente é 11 e o resto é 11)
  • 1/2=11 / 2 = 1 (Quociente é 00 e o resto é 11)

Se olharmos os restos das operações teremos um binário: 110001110001, mas e os outros zeros? Eles são adicionados a esquerda até ter 88 dígitos no total. Um binário com 8 dígitos podemos chamar de binário de 8 bits, legal né?

Nota

A cada 8 bits temos 1 byte, logo 2 bytes é 16 bits. (Ver mais sobre isso)

É a partir do sistema binário que podemos representar diversos tipos de informações usando outros sistemas como ASCII, Unicode, RGB, HEX...

Convertendo números binários com programação

Agora que temos as instruções necessários para converter de decimal para binário e binário para decimal, podemos criar algoritmos que façam esse cálculo mais rápido usando programação:

Binário para decimal

def bin_to_dec(bin: str) -> int:
  sum = 0;

  i = 0
  for digit in reversed(bin):
    sum += int(digit) * (2 ** i)
    i += 1

  return sum

bin_to_dec("00110001") # 49

Decimal para binário

def dec_to_bin(dec: int) -> str:
  bin = []

  quotient = dec
  while quotient > 0:
    bin.insert(0, str(quotient % 2))
    quotient //= 2

  return "".join(bin).rjust(8, "0")

dec_to_bin(49) # "00110001"