Existem diversos sistemas númericos para fazer operações no geral. O que mais usamos no dia a dia é o decimal que tem base , assim cada dígito consegue representar dez valores diferentes de a .
Ex: Como é formado o número 874?
- 8 centenas ()
- 7 dezenas ()
- 4 unidades ()
E quando falamos do sistema binário, ele tem base , sendo assim um sistema bem simples para um computador usar, já que existe apenas dois dígitos possíveis, e .
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: , , ...
Pra entender melhor, vamos usar o exemplo das lâmpadas, desligada vale e ligada vale :
De acordo com as lâmpadas, temos um número binário . 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:
- De trás pra frente, vamos chamar o dígito de e multiplicar o pela base com a potência valendo a posição de iniciando em . Sabendo disso vamos guardar o resultado de cada operação:
- Agora vamos somar os resultados das operações,
Isso significa que o binário em decimal, vale .
Mas... é o inverso? Como fazemos?
De decimal para binário dividimos cada dígito por , anotamos o resto e dividimos o quociente por de novo até o quociente ser . Após isso o valor em binário vai ser a sequência de restos invertida.
- (Quociente é e o resto é )
- (Quociente é e o resto é )
- (Quociente é e o resto é )
- (Quociente é e o resto é )
- (Quociente é e o resto é )
- (Quociente é e o resto é )
Se olharmos os restos das operações teremos um binário: , mas e os outros zeros? Eles são adicionados a esquerda até ter dígitos no total. Um binário com 8 dígitos podemos chamar de binário de 8 bits, legal né?
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"