O que é binário?

Prévia grátis 5 min de leitura

Por que computadores falam em 0s e 1s

Você conta usando dez dígitos: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Esse é o sistema decimal (base-10), e você o usa porque tem dez dedos.

Computadores não têm dedos. Eles têm transistores, minúsculas chaves eletrônicas. Os circuitos do computador tratam cada um como ligado ou desligado. Para a lógica, não existe "meio ligado" ou "quase desligado". Apenas dois estados.

Por causa dessa limitação física, computadores usam o sistema binário (base-2), que tem apenas dois dígitos: 0 e 1.

Transistor DESLIGADO = 0
Transistor LIGADO    = 1

Cada número, cada letra, cada pixel de cada imagem, cada byte de cada arquivo Ruby: tudo é armazenado como uma sequência de 0s e 1s dentro do seu computador.


Contando em binário

No decimal, quando você esgota os dígitos (depois do 9), adiciona uma nova coluna à esquerda e recomeça:

 8,  9, 10, 11, 12, ...

O binário funciona da mesma forma, mas você esgota os dígitos depois do 1:

Decimal:  0   1   2   3   4   5   6   7   8
Binário:  0   1  10  11 100 101 110 111 1000

Vamos entender como as colunas binárias funcionam:

Colunas decimais (base-10):
  1000s  100s  10s  1s
    1      2    5    3   = 1×1000 + 2×100 + 5×10 + 3×1 = 1253

Colunas binárias (base-2):
  128s  64s  32s  16s  8s  4s  2s  1s
    1    0    0    1   1   0   1   0  = 128+16+8+2 = 154

Cada coluna no binário é uma potência de 2 (1, 2, 4, 8, 16, 32, 64, 128...), assim como cada coluna no decimal é uma potência de 10.


As potências de 2: o melhor amigo do desenvolvedor

Esses números vão aparecer em toda a sua carreira:

Potência Valor Onde Você Vê
2⁰ 1 Um único bit
2¹ 2 Booleano: true/false
2³ 8 Um byte (8 bits)
2⁸ 256 Valores de cor RGB (0-255)
2¹⁰ 1.024 1 KiB (muitas vezes escrito KB)
2¹⁶ 65.536 Faixa de portas TCP
2²⁰ 1.048.576 1 MB (megabyte)
2³⁰ 1.073.741.824 1 GB (gigabyte)
2³² 4.294.967.296 Limite de endereços IPv4

Quando uma coluna no banco de dados é integer (32-bit com sinal), seu valor máximo é 2³¹ - 1 = 2.147.483.647. Acima disso, você precisa de bigint (64-bit). O Rails cria chaves primárias bigint por padrão desde o Rails 5.1, então esse limite pega mais tabelas antigas e colunas integer comuns.


Binário em Ruby

O Ruby permite escrever números diretamente em binário usando o prefixo 0b:

0b1010        # => 10
0b11111111    # => 255
0b10000000    # => 128

Você também pode converter entre decimal e binário:

# Decimal para string binária
42.to_s(2)       # => "101010"
255.to_s(2)      # => "11111111"

# String binária para decimal
"101010".to_i(2) # => 42
"11111111".to_i(2) # => 255

Isso não é só curiosidade: você vai usar operações binárias ao trabalhar com:

  • Permissões de arquivo (chmod 755 na verdade são flags binárias)
  • Flags bitwise (feature toggles armazenados como um único inteiro)
  • Máscaras de rede (sub-redes IP usam operações AND binárias)
  • Valores de cor (canais RGB empacotados em inteiros)

Convertendo decimal para binário manualmente

Para converter um número decimal para binário, divida repetidamente por 2 e colete os restos:

42 ÷ 2 = 21 resto 0  ─┐
21 ÷ 2 = 10 resto 1   │
10 ÷ 2 =  5 resto 0   │  Leia os restos
 5 ÷ 2 =  2 resto 1   │  de BAIXO para CIMA:
 2 ÷ 2 =  1 resto 0   │  101010
 1 ÷ 2 =  0 resto 1  ─┘

42 em decimal = 101010 em binário ✓

Verificação: 1×32 + 0×16 + 1×8 + 0×4 + 1×2 + 0×1 = 32 + 8 + 2 = 42 ✓


Por que isso importa para devs Rails

Você pode pensar: "Eu escrevo Ruby, não binário. Por que deveria me importar?"

  1. IDs no banco de dados: Quando uma coluna de id integer chega a 2.147.483.647 (2³¹ - 1), os inserts falham. O users.id deste app é bigint, então isso não acontece. Entender binário te diz por quê e quando.

  2. Codificação de caracteres: Um emoji UTF-8 como 😀 ocupa 4 bytes (32 bits). O varchar(1) do PostgreSQL conta caracteres, então o emoji cabe, mas ainda ocupa 4 bytes. Qualquer limite medido em bytes vê que "1 caractere" ≠ "1 byte".

  3. Permissões: chmod 755 significa 111 101 101 em binário: o dono pode ler/escrever/executar, o grupo e outros podem ler/executar.

  4. Performance: Operações bitwise (&, |, ^, <<, >>) estão entre as operações mais rápidas que uma CPU consegue fazer, em geral um único ciclo de clock no nível do hardware.


Resumo

Conceito O que Significa
Binário (base-2) Sistema numérico com apenas 0 e 1
Transistor Chave física: LIGADO (1) ou DESLIGADO (0)
Potências de 2 Valores das colunas: 1, 2, 4, 8, 16, 32, 64, 128...
Prefixo 0b Sintaxe Ruby para literais binários (0b1010 = 10)
.to_s(2) Converte inteiro para string binária em Ruby
.to_i(2) Converte string binária para inteiro em Ruby
Limite do inteiro 32-bit 2.147.483.647: saiba quando usar bigint
Aula 1 de 7 · grátis

Continue com a aula 2

Bits e bytes: unidades de dados

Bits, bytes, KB e KiB, bits e bytes em redes, e como o Ruby mede o tamanho de strings e objetos.

Com uma conta grátis você também tem os quizzes, seu progresso e suas anotações, e a discussão.

Digite para buscar...