Bases Numéricas

Binário, decimal, octal e hexadecimal

Organização de Computadores

Por que isso importa?

O computador é uma máquina digital: internamente só existem dois estados elétricos, representados por 0 e 1. Tudo — números, texto, imagens, vídeo — vira sequência de bits.

Entender bases numéricas permite ler endereços de memória, cores em hexadecimal (#FF5733), máscaras de rede, permissões em octal (chmod 755) e depurar programas em baixo nível.

O que é uma "base"?

A base é a quantidade de símbolos que um sistema de numeração usa. Cada posição do número representa uma potência da base — é a notação posicional.

Decimal (base 10): 253
= 2×10² + 5×10¹ + 3×10⁰
= 200 + 50 + 3
SistemaBaseSímbolos
Binário20 1
Octal80 a 7
Decimal100 a 9
Hexadecimal160-9 e A-F

Sistema Binário (base 2)

Usa apenas 0 e 1. Cada dígito é um bit. Cada posição vale uma potência de 2.

2⁷2⁶2⁵2⁴2⁰
1286432168421

Com n bits representam-se 2n valores diferentes. 8 bits (1 byte) = 256 valores (0 a 255).

Binário → Decimal

Some os pesos das posições onde há 1:

1286432168421
10011010

128 + 16 + 8 + 2 = 154

Decimal → Binário

Divisões sucessivas por 2:
  25 ÷ 2 = 12, resto 1
  12 ÷ 2 = 6,  resto 0
   6 ÷ 2 = 3,  resto 0
   3 ÷ 2 = 1,  resto 1
   1 ÷ 2 = 0,  resto 1

Lê de baixo p/ cima: 11001

Divida o número por 2 sucessivamente, anotando os restos. Quando o quociente chegar a 0, leia os restos de baixo para cima.

Conferindo: 16 + 8 + 1 = 25. ✓

Sistema Hexadecimal (base 16)

Usa 16 símbolos: 0–9 e A–F (onde A=10, B=11, ... F=15). Cada dígito hexadecimal equivale exatamente a 4 bits (um nibble), o que facilita a leitura de binários longos.

DecBinHexDecBinHex
000000810008
100011910019
200102101010A
300113111011B
401004121100C
501015131101D
601106141110E
701117151111F

Binário ↔ Hexadecimal (o atalho)

Como 1 hex = 4 bits, basta agrupar de 4 em 4 (da direita para a esquerda):

Binário: 1011 1110
Grupos:  1011 | 1110
Hex:      B    |  E   → BE

Hex: 0x2F → 0010 1111

É por isso que cores na web usam hex: #FF0000 é vermelho puro — FF (255) de vermelho, 00 de verde, 00 de azul.

Sistema Octal (base 8)

Usa os dígitos 0–7. Cada dígito octal equivale a 3 bits. Menos comum hoje, mas ainda usado em permissões de arquivos no Linux.

chmod 755 arquivo

7 = 111 → rwx (dono)
5 = 101 → r-x (grupo)
5 = 101 → r-x (outros)

Para converter binário → octal, agrupe de 3 em 3 bits.

Aritmética binária

Soma

Regras: 0+0=0, 0+1=1, 1+0=1, 1+1=10 (0 com "vai um").

  1 1   (vai-um)
  0 1 1 1  (7)
+ 0 0 1 1  (3)
---------
  1 0 1 0  (10)

Multiplicação por 2

Deslocar todos os bits uma casa à esquerda multiplica por 2 (shift left). Deslocar à direita divide por 2.

0011 (3)
« 1
0110 (6)

Tabela de equivalência

DecimalBinárioOctalHexadecimal
10101012A
16100002010
321000004020
100110010014464
25511111111377FF
1024100000000002000400

Desafio de fixação

1) Converta decimal 45 para binário.

2) Converta binário 1101 0110 para hexadecimal.

3) Quanto vale 0x1A em decimal?

Respostas: 1) 101101   2) D6   3) 26 (16 + 10).

Aprofundamento: a fórmula geral das bases

Qualquer número em qualquer base b é uma soma de dígitos vezes potências da base. Essa é a definição formal da notação posicional:

N = dn·bn + ... + d1·b1 + d0·b0

Para converter qualquer base → decimal, o método de Horner evita calcular potências: processa-se da esquerda para a direita, multiplicando o acumulado pela base e somando o próximo dígito.

2A3(16) por Horner:
  ((2 × 16) + 10) × 16 + 3
  = (42 × 16) + 3
  = 672 + 3 = 675

Para decimal → base b, generaliza-se as divisões sucessivas: divide-se por b, anotando os restos, e lê-se de baixo para cima. Vale para octal (÷8), hexadecimal (÷16) e qualquer base.

Aprofundamento: convertendo a parte fracionária

0,625(10) → binário
(multiplicações sucessivas por 2):

0,625 × 2 = 1,25
0,25  × 2 = 0,5
0,5   × 2 = 1,0 → para

Lê de cima p/ baixo: 0,101

A parte inteira usa divisões sucessivas; a fracionária usa multiplicações sucessivas pela base. A cada passo, a parte inteira do produto (0 ou 1) é o próximo dígito; repete-se com a parte fracionária restante.

Confira: 0,101 = 1·2−1 + 0·2−2 + 1·2−3 = 0,5 + 0,125 = 0,625. ✓

Cuidado: nem toda fração decimal termina em binário. 0,1(10) vira uma dízima binária infinita (0,0001100110011...). É a raiz matemática do erro de "0,1 + 0,2 ≠ 0,3" em ponto flutuante.

Aprofundamento: somar direto em hexadecimal

Não é preciso converter para decimal para somar em outra base — basta lembrar que o "vai-um" ocorre ao atingir o valor da base.

  1   (vai-um)
  2 F(16)  (= 47)
+ 1 8(16)  (= 24)
-------
  4 7(16)  (= 71)

F + 8 = 15 + 8 = 23 = 16 + 7 → escreve 7, vai 1
1 + 2 + 1 = 4 → escreve 4

Em octal, o vai-um acontece ao chegar a 8; em binário, ao chegar a 2. O raciocínio é sempre o mesmo da soma decimal, mudando apenas o valor em que "estoura" a casa.

Aprofundamento: subtrair somando (complemento)

O hardware evita um circuito de subtração: ele soma o complemento. Para A − B em n bits, soma-se A ao complemento de 2 de B (inverter os bits e somar 1).

13 − 5 em 8 bits:

 13    = 0000 1101
−5 (compl.2 de 5) = 1111 1011
soma       = 1 0000 1000

descarta o vai-um → 0000 1000 = 8

É por isso que o complemento de 2 é o padrão universal: a mesma ULA soma e subtrai, sem circuitos separados nem tratamento especial do sinal.

Aprofundamento: BCD (decimal codificado em binário)

Às vezes interessa guardar cada dígito decimal separadamente, em 4 bits. É o BCD, usado em calculadoras, mostradores, sistemas financeiros e relógios digitais.

NúmeroBinário puroBCD (dígito a dígito)
250001 10010010 0101 (2 = 0010, 5 = 0101)
490011 00010100 1001

Vantagem: evita o erro de arredondamento da conversão binária de frações decimais (importante em dinheiro). Desvantagem: desperdiça espaço — as combinações de 1010 a 1111 não são usadas.

Exercícios resolvidos

1. Converta 0xC3 para decimal e binário.

Ver solução
Decimal: C = 12, então 12×16 + 3 = 192 + 3 = 195. Binário: cada dígito hex = 4 bits → C = 1100, 3 = 0011 → 1100 0011.

2. Converta o decimal 0,375 para binário.

Ver solução
Multiplicações sucessivas por 2: 0,375×2 = 0,75 → 0; 0,75×2 = 1,5 → 1; 0,5×2 = 1,0 → 1 (para). Lendo de cima para baixo: 0,011. Conferindo: 0,25 + 0,125 = 0,375. ✓

3. Some, em binário, 1011 + 0110.

Ver solução
1011 (11) + 0110 (6) = 10001 (17). Conferindo em decimal: 11 + 6 = 17. ✓

4. Converta o binário 101110 para octal e hexadecimal.

Ver solução
Octal (grupos de 3): 101 110 → 5 6 = 568. Hexadecimal (grupos de 4): 0010 1110 → 2 E = 2E16. (Em decimal: 46.)

Resumindo

Toda informação no computador é binária. Decimal é a base humana; binário é a da máquina; octal e hexadecimal são atalhos compactos para ler binário. Saber converter entre elas é essencial em redes, cores, permissões e programação de baixo nível.

Voltar aos Tópicos