Hardware - Bytes e bits
top of page
  • Leonardo Ritter

Hardware - Bytes e bits

Atualizado: 30 de jun. de 2022


Imagem dos gráficos de clock e de um par diferencial transmitindo 8 bits

GIF 1

Este artigo é a explicação sobre o que são bits e bytes e qual as diferenças entre os dois.


Toda a informação que circula num circuito digital (placas-mãe de desktop, notebook, smartphone, featurephone, ou qualquer outro aparelho que faça cálculos por meio da eletricidade) é feita de sequências de pulsos elétricos. Estas sequências são feitas de pulsos que podem assumir um nível elétrico LOW (baixo) ou HIGH (alto). Nem sempre o nível LOW representa o bit zero e nem sempre o nível HIGH representa o nível 1, isso pode variar de acordo com as especificações do circuito e interface de comunicação.


Todos os arquivos que estão no seu smartphone, PC, notebook, ou que estão na internet, isto é, músicas, vídeos, fotos, animações, textos, planilhas, aplicativos, softwares, firmwares, entre outros, são feitos de sequências finitas de zeros e uns.

Mas como saber o tamanho do arquivo, ou a máxima taxa de transferência de uma conexão de dados? É aí que entram as unidades de medida. Para saber a quantidade de pulsos elétricos de um arquivo qualquer, utilizamos a unidade Byte. Para medir a taxa de transferência da sua conexão de internet por exemplo, utilizamos a unidade bit. O bit é o nome dado ao pulso elétrico, que pode ter valor zero ou um. Uma combinação de oito bits, isto é, 8 pulsos elétricos, vale 1 Byte.


É importante que você não confunda uma unidade com a outra. As operadoras de internet normalmente divulgam a velocidade de transferência utilizando só o prefixo "Mega" não informando se é Megabits ou MegaBytes. Estas duas unidades de medida, apesar de serem utilizadas para o mesmo fim representam quantidades diferentes.

OS PREFIXOS DO BYTE


Veja a tabela abaixo para unidade de medida Byte e seus prefixos:

Tabela dos prefixos e valores do Byte

Tabela 1


Os prefixos de unidade kilo, Mega, Giga, Tera, Peta, Exa e Zeta são utilizados para representar números de base 10, o que significa que eles sempre serão utilizados para representar "números redondos", e não 1.024 como na tabela acima. Como assim?

Vou dar um exemplo: os Discos Rígidos nunca tem a capacidade real informada em seu rótulo, isto porque as fabricantes levam em conta 1 kiloByte sendo 1000 Bytes e não 1024. Ao final, temos bem menos do que o informado no rótulo. Tanto que o Windows sempre informa "931,5 GB" para um HD de 1 TB ou "465.6 GB" para um HD de 500 GB, por exemplo, isto pois o sistema operacional do tio Bill utiliza base 2 pra calcular, ou seja, 1 Byte vai ser, de fato, 1024 bits.

Mas por que 1000 Bytes? Pois o Sistema Internacional diz que, independente da unidade de medida em questão, o valor não pode ser um "número quebrado". Mesmo assim, utilizar os prefixos do SI para Bytes, e levando em consideração os números quebrados (1024, 2048, 4096 e assim por diante) não é errado.

Para evitar que haja conflitos entre valores, desde 1995 o IEC (International Electrotechnical Commission) e o COBEI (Comitê Brasileiro de Eletricidade, Eletrônica, Iluminação e Telecomunicações) está propondo uma padronização neste sistema utilizando base 2. O padrão introduziu os prefixos "kibi" (kibinário), "Mebi" (Mebinário), "Gibi" (Gibinário), "Tebi" (Tebinário), "Pebi" (Pebinário) e "Exbi" (Exbinário) para que os prefixos kilo, Mega, Giga, Tera, Peta e Exa parassem de ser utilizados na unidade de medida Byte e assim não gerar confusões. A tabela ficou assim:

Os prefixos binários

Tabela 2


A letra "i" na abreviação e a sílaba "bi" do prefixo servem para mostrar que é o padrão binário que está sendo utilizado. Alguns anos depois de lançarem este padrão, fizeram uma revisão e incluíram os prefixos "Zebi" e o "Yobi" acima do prefixo "Exbi" na hierarquia de prefixos.

Módulos de memória RAM ainda utilizam os prefixos padrões do SI em seus rótulos e também levando em conta os números quebrados (1024), ou seja, MegaBytes e GigaBytes. No Linux, o padrão já é utilizado, então a memória RAM é lida em MebiBytes ou GibiBytes. Já o Windows ainda identifica a memória RAM com o padrão antigo, ou seja, MegaBytes e GigaBytes. Diferente dos HDs, as memórias RAM realmente têm a capacidade de memória prometida, apesar do prefixo não estar correto.

Quando você pegar um módulo de memória RAM de, por exemplo 4 GigaBytes, tenha em mente que na verdade são 4 GibiBytes!


CURIOSIDADE: Outro detalhe chato sobre os prefixos de unidade é que nunca devemos escrever ou abreviar "kilo" com "k" maiúsculo. Este prefixo é por padrão escrito e abreviado com letra minúscula. Isto vale também para o prefixo binário "kibi".

RECAPITULANDO A IDEIA


Os prefixos padrões do SI (kilo, Mega, Giga, Tera, Peta, Exa e Zeta) são de base 10 e representam sempre "números redondos". Por exemplo:

1 kiloMetro significa 1000 metros;

1 kiloOhm significa 1000 ohms.


Já o sistema de medição de quantidade de dados tem base 2 e representam sempre números quebrados. Por exemplo:

1 kiloByte, significa 1024 Bytes.

Para evitar estas confusões, o IEC criou os novos prefixos (kibi, Mebi, Gibi, Tebi, Pebi, Exbi, Zebi e Yobi) que admitem ter base 2 e representam números quebrados!


POR QUE É BYTE?


CURIOSIDADE: Um Byte pode ser chamado também de octeto, a metade de um Byte (4 bits) é chamada de nibble e a palavra bit significa Binary Digit. Quando temos 16 bits, chamamos de Word (palavra), quando temos duas palavras chamamos de Dual Word e quando temos 4 palavras chamamos de Quad Word. Veja a tabela abaixo:

Tabela 3 - O correto é Nibble! Perdão pelo erro de digitação...


Na época que existiam os registradores de 8 bits é que foi criado esta nomenclatura. Por este motivo que padronizaram o Byte (8 bits) como unidade de medida. Hoje já utilizamos registradores de 64 bits em quase todos os processadores.


O BIT


Quando se trata de bits, não há potências de base 2. Veja a tabela abaixo para a unidade de medida bit e seus prefixos:

Tabela dos prefixos e valores do bit

Tabela 4


Observe que bit se escreve e se abrevia com a letra "b" (minúscula) para que não haja confusões com a unidade de medida Bytes.

Mas tem como converter Bytes para bit ou vice-versa? Tem sim! Veja a fórmula abaixo:


EXEMPLO 1:

Em uma conexão de internet é transmitido 1 Mbps(Megabit por segundo), quantos Bytes podem ser transferidos a cada segundo?


1 Mb / 8 bits = 0,125, ou seja, 125 KB/s (kiloBytes por segundo)

Abaixo você vê a tabela com a conversão de bits para Bytes. LEVAMOS EM CONSIDERAÇÃO que 1 kiloByte é 1024 Bytes e assim por diante:

Tabela de comparação entre valores em bits e prefixos do Byte

Tabela 5


Na coluna "A" temos os valores normais em B, kB, MB, GB e TB, que são os mais utilizados atualmente.

Na coluna "B" temos os valores da coluna "A" em bits.

Na coluna "C" temos os valores da coluna "B" em Bytes.

Na coluna "D" temos os valores da coluna "C" em kiloBytes.

Na coluna "E" temos os valores da coluna "D" em MegaBytes.

Na coluna "F" temos os valores da coluna "E" em GigaBytes.

Na coluna "G" (marcada em vermelho) temos os valores em notação binária (kibi, Mebi, Gibi, Tebi e Pebi). Esta é a notação que devemos utilizar, abandonando o padrão que utiliza dos prefixos do Sistema Internacional de Unidades (kilo, Mega, Giga, Tera, Peta...).

Coloquei na tabela o sistema antigo para verem que não é tão difícil parar de falar "GigaBytes" e passar a falar "GibiBytes".

OS NÚMEROS DE BASE 10


No nosso dia-a-dia utilizamos números de base 10. Os números de base 10 são:


EXEMPLO 2:

Com os números de base 10, formamos qualquer outro número. Veja o exemplo abaixo:

Quadro 1


OS NÚMEROS DE BASE 2


Nos primórdios da computação clássica, foi criado um sistema de conversão de números decimais para código binário e que usava base 2, o que permitia apenas dois números:

Como na época era necessário apenas atribuir o alfabeto e os sinais de pontuação que utilizamos, números de 0 a 9, comandos do MS-DOS e de controles internos aos códigos binários, foram utilizadas combinações de 8 pulsos elétricos, o que permitiu a criação de 256 códigos (já que 2 elevado a 8 = 256).

A partir desse sistema de codificação que foi definido que 8 bits é igual a 1 Byte e que 1024 Bytes é igual a 1 kiloByte (abaixo você verá mais detalhes sobre os prefixos kilo, Mega, Giga, Tera...).

Para fazer a conversão de números decimais em código binário foi utilizado 8 potências de 2, isto é:

Esta sequência de potências é chamada de "little endian" e é utilizada em eletrônica digital, ou seja, tudo o que envolva microcontroladores, microprocessadores, hardwares de armazenamento, enfim, computação em geral.

A sequência abaixo é o contrário da "little endian" e se chama "big endian". Observe:

A sequência big endian é utilizada principalmente em redes que utilizam a pilha de protocolos TCP/IP. Independente da sequência utilizada, os números em hexadecimal e decimal serão os mesmos.


EXEMPLO 3:

Abaixo temos a conversão do número binário 11000001, que representa o número decimal 193:

Quadro 2


A sequência que utilizei é a "little endian". Se for utilizada a sequência "big endian", o código binário ficará o contrário, mas continuará representando o número 193. Observe:


little endian: 11000001 = 193

big endian: 10000011 = 193

O SISTEMA HEXADECIMAL


Atualmente utilizamos também o sistema hexadecimal para criação de códigos binários. O sistema hexadecimal utiliza base 16 e combinações de 4 bits para a conversão de números. Isso permitiu uma maior combinação de zeros e uns, pois 2 elevado a 16 é igual a 65.536 combinações. Veja a tabela hexadecimal abaixo:

Tabela 6


Para não gerar confusões com os números, foi adotado as letras A, B, C, D, E e F para os números 10, 11, 12, 13, 14 e 15 decimais. A conversão de um número hexadecimal para binário e binário para decimal é fácil. Veja os exemplos abaixo.

EXEMPLO 4:

Para transformar números hexadecimais em decimais, observe o exemplo abaixo:

Quadro 3


EXEMPLO 5:

E se tivermos o número hexadecimal 3F9A. Como fica o código binário em decimal?

O número 3 vale: 0011

O número F vale: 1111

O número 9 vale: 1001

O número A vale: 1010


Portanto, o número hexadecimal 3F9A é em código binário 0011111110011010


Em decimal, fica:

Quadro 4


O SISTEMA OCTAL


O sistema de conversão de números decimais para código binário é o sistema octal. Ele não será explicado neste artigo pois não é muito utilizado na informática e tornaria este artigo mais longo e ainda mais complexo.


PARA NÃO CONFUNDIR


Como sabemos quando um código binário foi convertido utilizando o sistema hexadecimal ou de base 2? Normalmente os códigos vem com uma letra representando o sistema de conversão.

Em códigos hexadecimais você verá a letra "h" em minúsculo após o código. Exemplos: 10h, A9h, 3h, 0101h, 1110h. Também poderá acontecer de o número 16 ser colocado após o código. Exemplo: 4C9916.


Códigos usando base 2 você verá a letra "b" (minúscula) ou o sifrão ($) após o código. Exemplos: 193b, 170$, 11000001b. Também poderá acontecer do número 2 ser adicionado após o código. Ex.: 122.


Em números decimais é adicionado a letra"d". Ex.: 10d, 150d, 99d. O número 10 pode ser adicionado após o número decimal. Ex.: 23810.


MAIS SIGNIFICATIVO E MENOS SIGNIFICATIVO


Nos códigos binários, há o bit mais significativo e o menos significativo. Como assim?

Voltando ao EXEMPLO 2, onde o código binário do número 193 era o 11000001 (na sequência little endian), o bit mais significativo é o que representa o número 128 e o menos significativo é o que representa o número 1. Se fosse na sequência big endian, seria o contrário. Observe:

Quadro 5


Como símbolo do bit mais significativo utilizamos a sigla "msb" (abreviação para most significant bit), escrita sempre com letras minúsculas. Para o bit menos significativo utilizamos a sigla "lsb" (abreviação para least significant bit), também deve ser escrita sempre com letras minúsculas.

Quando temos um conjunto de 8 Bytes (um QWord) também verifica-se sua sequência e se atribui o Byte mais significativo e o menos significativo. Observe:

Quadro 6


Observe que quando se trata de Byte mais significativo e menos significativo, a sigla LSB e MSB se escreve com letras maiúsculas para que se evite confusões por parte dos técnicos entre bit e Byte.

Para códigos binários de hexadecimais e outros sistemas de conversão também pode se verificar a sequência e o bit e o Byte mais e menos significativo.

Taxa de transferência de dados


Numa placa de circuito qualquer, há ligações entre os componentes. Existem dois tipos de ligações: as conexões ponto-a-ponto e barramentos. Como saber a taxa de transferência destas ligações? Veja abaixo a fórmula para o cálculo:

Para calcular a taxa de transferência dessas ligações temos que saber:


Clock = o sinal de sincronismo entre transmissor e receptor (o valor deve estar sempre em MHz);

Nb = a largura (a quantidade de trilhas para transferência de dados e que também pode ser informada em bits);

Qd = a quantidade de dados transmitidos por ciclo de clock em cada trilha. 1 dado é igual a 1 bit.

Devemos multiplicar essas três variáveis e dividir o resultado por 8 bits;

Tt = Taxa de transferência em MB/s (MegaBytes por segundo).

EXEMPLO 6:

O barramento PCI utilizado em placas-mãe, possui um clock padrão de 33 MHz (MegaHertz), a largura do barramento é de 32 trilhas (32 bits), e ele transmite 1 dado por ciclo de clock em cada trilha, isso significa que a taxa de transferência em MB/s é de:


33 MHz . 32 . 1 / 8 = 132 MB/s

Multiplicando este valor por 8 bits temos: 1056 Mbps, que é aproximadamente 1,05 Gbps

Para entender os próximos exemplos, você deve saber que a conexão PCI Express revisão 1.0 e 2.0 e a conexão SATA possuem o sistema de codificação de dados 8B/10B e por este motivo, o resultado da multiplicação deve ser dividido por 10 e não por 8.


EXEMPLO 7:

Numa determinada placa-mãe, há um slot PCIe x16 revisão 2.0 com clock de 5 GHz, com largura de 16 bits, transmitindo 1 dado por ciclo de clock em cada trilha. Qual é a taxa de transferência em MB/s?


5 GHz = 5000 MHz

5000 MHz . 16 . 1 / 10 = 8000 MB/s que é aproximadamente 78 GB/s


Multiplicando 8000 MB/s por 8 bits, temos 64 Gbps

EXEMPLO 8:

Numa determinada motherboard, há quatro portas SATA revisão 3 de 600 MB/s e duas portas SATA revisão 2 de 300 MB/s. Ambas as revisões possuem largura de 1 bit e transmitem 1 dado por ciclo de clock. Qual o clock destas duas conexões?

Como foi dito anteriormente, o padrão SATA possui codificação 8B/10B. A largura é de apenas 1 bit e a transferência de dados é de apenas um bit por ciclo de clock. Sabendo disso é fácil deduzir que a conexão SATA 2 trabalha a 3000 MHz e a conexão SATA 3 trabalha a 6 GHz.

EXEMPLO 9:

O barramento entre o controlador de memória e a memória RAM DDR2 1066 possui 64 trilhas, ou seja, 64 bits. Neste caso, 2 dados são transmitidos por ciclo de clock em cada trilha. Qual a taxa de transferência?

A memória DDR2 1066 possui clock de 533 MHz, pois:


1066 / 2 bits por ciclo = 533 Mhz


533 . 64 . 2 / 8 = 8528 MB/s.


Multiplicando 8528 MB/s por 8 bits, temos aproximadamente 68,2 Gbps

 

Taxa de transferência de sinais


A taxa de transferência de dados (medida em B/s ou bps) só leva em conta as informações úteis. Em muitos casos, a conexão de dados transmite mais sinais (pulsos elétricos) por causa do sistema de modulação ou codificação. É aí que entra a unidade de medida Baud.


CURIOSIDADE: Baud deriva do sobrenome de Émile Baudot, francês inventor do código telegráfico Baudot. Um baud é uma medida de velocidade de sinalização e representa o número de mudanças na linha de transmissão ou eventos por segundo.


EXEMPLO 10:

Uma conexão Ethernet de 100 Mbps possui sistema de codificação 4B/5B, isto é, 25% desses dados não são úteis para nós, mas sim frutos do sistema de codificação, que adiciona 1 bit a mais para cada 4 bits de dados. Ou seja, na realidade temos então uma conexão com 125 MBaud de taxa de sinalização, mas apenas 100 Mbps aproveitados.


125 MBaud x 4 = 500


500 / 5 = 100 Mbps


EXEMPLO 11:

Em outro exemplo, uma conexão PCIe x1 com taxa de transferência de 250 MB/s, porém, com codificação 8B/10B, ou seja, 20% de dados são codificação. Isso se traduz em uma taxa de sinalização de 312,5 MBaud.


312,5 MBaud x 8 = 2500


2500 / 10 = 250 MB/s

Um vídeo, por exemplo é formado por, normalmente 30 FPS (quadros por segundo). Cada quadro é uma imagem e toda a imagem digital é formada por pixels, que são pontos de luz alinhados em forma de matriz. Mas onde entram os bits nisso?

Por exemplo, uma imagem que possua 854 x 480 pixels, significa que são 854 pixels de largura por 480 pixels de altura. Isso dá 409.920 pixels no total. Suponha que as cores que compõem esta imagem também são feitas de códigos de 8 bits.

Esta imagem de 854 x 480 pixels tem 3.279.360 bits, o que dá um valor entre 256 kB e 512 kB. Devemos lembrar que estamos fazendo o cálculo da imagem "crua", isto é, sem a codificação, o que poderia deixar o arquivo levemente maior ou menor dependendo do formato utilizado (JPEG, MPEG, BMP, entre outros formatos populares).

Se usarmos como exemplo um arquivo de vídeo com a resolução 854 x 480, como foi dito cada quadro tem 3.279.360 bits. Em um segundo de vídeo com 30 FPS teríamos 98.080.800 bits. Obviamente que dependendo do tempo de duração da gravação, da quantidade de FPS, se ele possui ou não som, a qualidade do som e do formato utilizado, ele terá um determinado tamanho, ou seja, uma determinada quantidade de bits (pulsos elétricos).

Tanto no vídeo, quanto no áudio, a cada segundo, um pacote de bits é processado. Esse pacote varia de tamanho dependendo da resolução da imagem e da qualidade do som. Chamamos isso de taxa de amostragem e é dado em kbps (kilobit por segundo).


Futuramente será lançado um artigo explicando o funcionamento de um chip conversor de sinal digital.

Se tiver interesse, continue lendo sobre Clock e os barramentos e conexões ponto-a-ponto que são explicadas aqui no blog. CLIQUE AQUI e acesse o sumário do livro "O Hardware Nos Mínimos Detalhes".


Tem alguma sugestão? Quer fazer alguma crítica construtiva? Fique a vontade para comentar e escrever para hardwarecentrallr@gmail.com


Não se esqueça de compartilhar nas redes sociais!

 

CRÉDITOS e FONTES

Textos, tabelas, gráficos: Leonardo Ritter

Referências: Curso de eletrônica básica e de hardware que eu fiz; site Clube do Hardware.

Última atualização: 26 de Junho de 2022.

4.852 visualizações

O Hardware Central abandonou de vez o Facebook. Não temos mais fanpage e a caixa de comentários que aqui habitava foi chutada pra longe! Não somos Mainstream! Redes socias não combinam com nós! Somos a galera dos livros!

Como também repassamos conteúdo de terceiros, não é justo restringir a cópia! O uso do conteúdo do HC e de toda a internet deve ser livre!

Para relatar erros, incongruências ou sugerir conteúdo, nos chame pelo hardwarecentrallr@gmail.com! Não somos perfeitos, mas sempre é possível melhorar!

bottom of page