Introdução

Hoje vamos começar a estudar os sistemas de numeração que são fundamentais para entender como os computadores representam e manipulam dados. Diferente do sistema decimal (base 10) que usamos no dia a dia, os computadores utilizam internamente o sistema binário (base 2) por razões físicas e de confiabilidade. Além do binário, também veremos o sistema hexadecimal (base 16) que é amplamente usado para representar endereços de memória e cores.

Sistema Decimal

O sistema decimal é o que usamos cotidianamente. Ele possui 10 dígitos (0 a 9) e cada posição representa uma potência de 10. Por exemplo, o número 345 significa 3×10² + 4×10¹ + 5×10⁰. É um sistema posicional, onde o valor do dígito depende da sua posição.

Sistema Binário

O sistema binário utiliza apenas dois dígitos: 0 e 1. Cada posição representa uma potência de 2. É o sistema nativo dos circuitos digitais, pois os transistores podem estar em estado ligado (1) ou desligado (0). Por exemplo, o número binário 1101 representa 1×2³ + 1×2² + 0×2¹ + 1×2⁰ = 8 + 4 + 0 + 1 = 13 em decimal.

Para converter um número decimal para binário, podemos usar o método das divisões sucessivas por 2, coletando os restos de baixo para cima:

13 ÷ 2 = 6 resto 1
6 ÷ 2 = 3 resto 0
3 ÷ 2 = 1 resto 1
1 ÷ 2 = 0 resto 1
Lendo os restos de baixo para cima: 1101

Em Python, podemos fazer essa conversão facilmente:

def decimal_para_binario(n):
    if n == 0:
        return "0"
    bits = []
    while n > 0:
        bits.append(str(n % 2))
        n //= 2
    return ''.join(reversed(bits))

print(decimal_para_binario(13))  # Saída: 1101

Sistema Hexadecimal

O sistema hexadecimal usa 16 dígitos: de 0 a 9 e as letras A, B, C, D, E, F (que representam 10 a 15). Cada posição é uma potência de 16. É muito usado em computação para representar valores grandes de forma mais compacta que o binário. Por exemplo, o binário 1111 1111 (255 decimal) é representado como FF em hexa.

Converter de binário para hexa é simples: agrupe os bits em grupos de 4 (da direita para a esquerda) e converta cada grupo ao dígito hexa correspondente.

Binário: 1101 0011 (2 bytes)
Grupo 1: 1101 = D
Grupo 2: 0011 = 3
Hexadecimal: D3

Conversão de decimal para hexadecimal:

def decimal_para_hexadecimal(n):
    if n == 0:
        return "0"
    digitos = "0123456789ABCDEF"
    resultado = []
    while n > 0:
        resultado.append(digitos[n % 16])
        n //= 16
    return ''.join(reversed(resultado))

print(decimal_para_hexadecimal(255))  # Saída: FF

Conversão entre Bases

As conversões mais comuns são entre binário, decimal e hexadecimal. A tabela abaixo mostra alguns valores equivalentes:

Decimal Binário Hexadecimal
0 0 0
1 1 1
2 10 2
3 11 3
4 100 4
5 101 5
6 110 6
7 111 7
8 1000 8
9 1001 9
10 1010 A
11 1011 B
12 1100 C
13 1101 D
14 1110 E
15 1111 F

Aplicações Práticas

Os sistemas de numeração são usados em diversas áreas da computação:

  • Endereçamento de memória: Endereços são frequentemente representados em hexadecimal por serem mais legíveis que longas sequências de bits.
  • Cores em HTML/CSS: As cores são definidas em hexa (ex: #FF0000 para vermelho).
  • Máscaras de rede: Em redes de computadores, as máscaras são representadas em binário e decimal.
  • Codificação de caracteres: Tabelas como ASCII usam valores binários/hexa para representar caracteres.

Resumo

  • Computadores usam o sistema binário (base 2) internamente.
  • O sistema decimal (base 10) é o nosso sistema cotidiano.
  • O sistema hexadecimal (base 16) é uma representação compacta do binário.
  • Conversões entre bases são feitas por divisões sucessivas ou agrupamento de bits.
  • Entender esses sistemas é essencial para programação de baixo nível, redes e arquitetura de computadores.

Perguntas Frequentes

Por que os computadores usam binário?

Porque os circuitos digitais são baseados em transistores que podem estar em dois estados estáveis (ligado/desligado), representando 0 e 1. Isso torna o sistema confiável e resistente a ruídos.

Como converter um número decimal para binário manualmente?

Divida o número por 2 sucessivamente, anotando os restos. O binário é a sequência de restos lida de baixo para cima.

Qual a vantagem do hexadecimal sobre o binário?

O hexadecimal é mais compacto e legível para humanos. Um byte (8 bits) pode ser representado por apenas dois dígitos hexa (ex: 11111111 = FF).