Representação de Dados & Sistema Numérico - Guia Básico de Estudos
Representação de Dados & Sistema Numérico
Introdução
Para um computador executar qualquer tipo de tarefa - somar números, exibir texto, processar imagens - é essencial que tudo seja transformado em bits (0s e 1s). Mas como representar diferentes tipos de dados (inteiros, frações, texto, etc.) usando apenas essa combinação binária? Esse é o tema deste artigo.
Sistemas Numéricos Fundamentais
Antes de ver representações específicas, precisamos conhecer os sistemas de numeração usados para codificar valores.
Decimal (base 10)
É o sistema que usamos no dia a dia: dígitos de 0 a 9, cada posição tem peso de potências de 10.
Por exemplo:
Mas em hardware digital, decimal não é eficiente internamente - usamos sistemas binários.
Binário (base 2)
É o sistema natural ao computador: apenas dois dígitos - 0 e 1.
Cada posição representa uma potência de 2:
Esse sistema permite codificar qualquer número inteiro, mas pode ficar longo quando há muitos bits.
Hexadecimal (base 16)
Para tornar a visualização (e depuração) mais compacta, usamos o hexadecimal (hex).
Ele tem 16 símbolos: 0-9 e A-F (onde A = 10, B = 11, etc.). Cada dígito hex representa exatamente 4 bits (um “nibble”)
0x1A = 1×16 + 10 = 26 decimal
0xFF = 15×16 + 15 = 255 decimal
Também facilita converter para binário: cada dígito hex → 4 bits.
Octal (base 8) - menos usado hoje
Relacionado ao binário, usa dígitos de 0 a 7. Cada dígito octal equivale a 3 bits.
Antigamente era usado em algumas arquiteturas de 12, 24 bits.
Conversões entre sistemas
Para trabalhar bem com representações, é essencial saber converter entre decimal, binário e hexadecimal.
Decimal > Binário
Para a parte inteira:
Divida o número por 2 repetidamente, anotando os restos (0 ou 1).Os restos lidos de baixo para cima formam o número binário.
Exemplo: converter 13₁₀ para binário:
13 ÷ 2 = 6 resto 1
6 ÷ 2 = 3 resto 0
3 ÷ 2 = 1 resto 1
1 ÷ 2 = 0 resto 1
Restos de baixo para cima > 1101₂.
Binário > Decimal
Multiplique cada bit pelo peso da posição (potência de 2) e some.
Por exemplo: 1011₂ = 1×2³ + 0×2² + 1×2¹ + 1×2⁰ = 8 + 0 + 2 + 1 = 11₁₀.
Binário ↔ Hexadecimal
Binário para hex: agrupe bits de 4 em 4 (da direita para a esquerda), e converta cada grupo para um dígito hex.Hex para binário: substitua cada dígito hex pelo seu equivalente em 4 bits.
Exemplo: 1101 1011₂ > agrupar > 1101 = D, 1011 = B > DB₁₆.
Ou 0x3F > 3 = 0011, F = 1111 > 0011 1111₂.
Decimal ↔ Hexadecimal
Pode-se fazer decimal > binário > hex, ou usar divisão por 16 com restos.
Representação de Inteiros (Inteiros sem / com sinal)
Inteiros sem sinal (Unsigned)
Simples: usar todos os bits para representar valores positivos (incluindo zero). Com n bits, podemos representar de 0 até (2ⁿ - 1).
Exemplo com 4 bits: 0000 até 1111 > valores de 0 até 15.
Inteiros com sinal (Signed)
Para permitir números negativos, precisamos usar codificações especiais. Três formas clássicas:
Signo-Magnitude (Sign-Magnitude)
O bit mais significativo (MSB) indica sinal (0 = positivo, 1 = negativo).Os demais bits representam o valor absoluto.
Ex: para 8 bits, +5 = 00000101, -5 = 10000101.
Problemas: há duas representações para zero (00000000 e 10000000), operações aritméticas complicadas.
Complemento de 1 (One’s Complement)
Para obter o negativo: invertem-se todos os bits (0 ↔ 1).
Ex: +5 = 00000101 > -5 = 11111010.
Também há ambiguidade (duas representações de zero).
Negativo: invertendo todos os bits + 1.
Ex: +5 = 00000101 > inverte = 11111010 > +1 > 11111011 é –5.
Único zero, operações aritméticas mais simples.
A maioria dos computadores modernos usa complemento de 2 para representar inteiros negativos.
Representação de Números Reais / Ponto Flutuante
Para representar frações e números muito grandes ou muito pequenos, usamos o formato ponto flutuante (floating point). O padrão mais comum é IEEE-754.
Estrutura básica (formato IEEE-754)
Para 32 bits (precisão simples / single precision):
1 bit de sinal (S) - indica positivo ou negativo
8 bits de expoente (E) - com viés (bias)
23 bits de mantissa / fração (F)O valor é calculado como:
(-1)^S × 1.F × 2^(E - bias)
O bias para 8 bits é 127 > ou seja, o valor real do expoente é E - 127.
Para 64 bits (dupla precisão / double precision):
1 bit de sinal11 bits de expoente
Nesse caso, o bias é 1023.
Normalização e representação
A forma “normalizada” assume que a mantissa tem um bit “1” implícito antes da vírgula (não armazenado explicitamente), para maximizar precisão.Limitações & erros de precisão
Nem todo número decimal pode ser representado exatamente em binário (por exemplo, 0,1).Há erro de arredondamento quando o número excede a precisão disponível.
Operações em ponto flutuante são mais custosas em hardware do que operações inteiras.
Exemplo prático (32 bits)
Suponha que temos o bit pattern:
0 | 10000001 | 01100000000000000000000
E = 10000001₂ = 129 decimal
Mantissa = 1.011000…₂ = 1 + 0.25 + 0.125 = 1.375
Expoente real = 129 – 127 = 2
Então o valor é +1.375 × 2² = +5.5
Você pode encontrar exemplos como esse no tutorial da Nanyang Tech University.
Representação de Caracteres / Texto
Além de números, queremos representar texto - letras, símbolos, etc. Para isso, adotamos codificações padronizadas.
ASCII
“American Standard Code for Information Interchange”Usa 7 ou 8 bits por caractere
Ex: ‘A’ = 65 decimal = 01000001₂
Unicode / UTF-8
Unicode engloba muitos idiomas e símbolos do mundo inteiro.UTF-8 é uma codificação variável (1 a 4 bytes por caractere) que mantém compatibilidade com ASCII para caracteres comuns.
Conclusão
Neste terceiro artigo, você aprendeu:
Sistemas numéricos (binário, hexadecimal, decimal e octal)Como converter entre eles
Representação de inteiros (sem sinal e com sinal, via complemento de 2)
Representação de números reais com ponto flutuante (IEEE-754)
Representação de caracteres / texto
Com essa base, você estará mais preparado para estudos seguintes: organização da CPU, representação de instruções, decodificação, etc.
Referências
Doc.IC - Computer Architecture - Binary Numbers. “Hexadecimal is a convenient shorthand for Binary.”
GeeksforGeeks. “Base Conversions for Number System.”CSApp / CMU - Representing and Manipulating Information.
Oregon State - Data Representation (slides).
CCBP Blog. “Data Representation in Computer Organization and its Types.”