Saltar para o conteúdo
BCBinary Code Translator
Menu
Voltar ao blog
Conceitos básicos

Porque é que um byte tem 8 bits? História e uso atual

Perceba por que razão existiram bytes de vários tamanhos, como o octeto de 8 bits se tornou dominante e o que isto significa para números, texto e redes.

4 min de leitura
Por Binary Code Translator
#binário#byte#história#arquitetura de computadores

Oito posições de bits que formam um byte, com legendas em português

Hoje, um byte tem quase sempre oito bits. Esta relação é tão habitual que parece uma lei natural, mas resulta da história do hardware, de convenções de software e da normalização.

Bit, byte e octeto

Um bit tem dois estados, representados por 0 e 1. Com oito posições há 2⁸ = 256 combinações, de 0 a 255 quando interpretadas como um inteiro sem sinal.

Historicamente, byte designava uma unidade endereçável capaz de representar um caráter e o seu tamanho dependia da máquina. Existiram arquiteturas com bytes de 6, 7, 8, 9 ou outros números de bits. Por isso, normas de redes usam muitas vezes a palavra octeto quando precisam de dizer inequivocamente «oito bits».

Porque é que venceu o grupo de oito

Não houve uma única decisão universal. Vários fatores reforçaram a escolha:

  • oito bits acomodavam ASCII de 7 bits e deixavam um bit disponível para extensões ou paridade;
  • 256 valores eram suficientes para muitos conjuntos de carateres e dados de controlo da época;
  • potências de dois simplificavam circuitos, endereçamento e operações binárias;
  • máquinas e sistemas comerciais influentes adotaram unidades de 8 bits;
  • protocolos, formatos de ficheiro e linguagens passaram a depender dessa escolha.

Depois de software, periféricos e redes convergirem, a interoperabilidade tornou a convenção difícil de alterar.

O valor de cada posição

Num byte interpretado como inteiro binário sem sinal, as posições valem:

128 64 32 16 8 4 2 1

O byte 10100110 representa:

128 + 32 + 4 + 2 = 166

A mesma sequência de bits pode ter outro significado se o tipo mudar: parte de um número com sinal, um canal de cor, um fragmento de texto UTF-8 ou um campo de um protocolo. Os bits não transportam sozinhos a informação sobre como devem ser interpretados.

Texto não significa um byte por caráter

ASCII cabe num byte, mas Unicode contém muito mais do que 256 pontos de código. UTF-8 usa de um a quatro bytes por ponto de código:

  • A usa um byte: 41 em hexadecimal;
  • á usa dois bytes: C3 A1;
  • usa três bytes: E2 82 AC;
  • muitos emoji usam quatro bytes.

Além disso, um grafema visível pode combinar vários pontos de código. Por isso, contagens de bytes, pontos de código e símbolos apresentados no ecrã podem ser diferentes.

Números e ordem dos bytes

Um inteiro de 32 bits ocupa normalmente quatro bytes. A ordem desses bytes na memória pode ser little-endian ou big-endian. Esta questão é diferente da ordem dos bits que se escreve dentro de cada byte.

Em redes, a expressão «ordem de bytes de rede» costuma designar big-endian. Formatos e protocolos devem especificar a ordem; não é seguro inferi-la apenas pelo tamanho.

A exceção importante das linguagens

Em C e C++, sizeof(char) é sempre 1 por definição, mas o número de bits desse byte é indicado por CHAR_BIT e a norma não exige universalmente o valor 8. Em plataformas correntes, CHAR_BIT é quase sempre 8. Código que depende exatamente de octetos deve declarar essa suposição ou usar tipos e protocolos adequados.

Explorar os valores

O conversor de binário para decimal mostra o valor numérico de um grupo de bits. A tabela de referência ASCII ajuda a comparar esse valor com carateres básicos, enquanto o guia sobre ASCII, Unicode e UTF-8 explica o passo seguinte.

O byte de oito bits é uma convenção extraordinariamente estável, não uma propriedade inerente da informação. Distinguir convenção, representação e significado torna os formatos binários muito mais fáceis de analisar.

Preferências de cookies

Gerir as preferências de cookies. Os cookies necessários não podem ser desativados.

Necessários

Obrigatório

Necessários para seleção de idioma, escolhas de privacidade e funcionalidades básicas do site.

Cookies: NEXT_LOCALE

Análises

Cookies opcionais de análise ajudam a entender o tráfego e melhorar o site.

Cookies: _ga, _gid, _gat, _clck, _clsk

Publicidade

Cookies opcionais de publicidade podem ser usados para mostrar anúncios relevantes e medir desempenho.

Cookies: __gads, _gcl_au, IDE