Hardware - Bytes e bits

Hardware - Bytes e bits

01/11/2017

| Escrito por:

 Gráficos de clock e de um par diferencial transmitindo 8 bits, visto no artigo publicado na semana passada

 

  Olá leitor! Hoje vamos entender o que são bits e bytes e qual as diferenças entre os dois! Então vamos lá!

  Tudo 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) trabalha com 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). Se o pulso atingir o nível LOW, ele é representado pelo número zero. Se o pulso atingir o nível HIGH, ele é representado pelo número 1.

  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 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 1:

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

 

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, foi utilizado combinações de 8 pulsos elétricos, o que permitiu a criação de 256 códigos (já que 2 elevado a 8 = 256).

  Foi 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 2:

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

  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

 

OS PREFIXOS DO BYTE

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

  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. 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, em 1998, o IEC (International Electrotechnical Commission) criou uma padronização neste sistema. O padrão introduziu os prefixos "kibi", "Mebi", "Gibi", "Tebi", "Pebi" e "Exbi" 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:

  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 criado em 1998 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.

  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!

  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 para o prefixo binário "kibi".

  Atenção! Sempre que vocês verem algum artigo meu escrito desta forma errada, me avisem! kkkkk

 

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.

 

  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 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?

  Curiosidades: 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:

  Na época que existiam os registradores de 8 bits 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 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:

  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 exemplo abaixo.

 

EXEMPLO 3:

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

EXEMPLO 4:

  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:

 

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:

  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:

  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ário 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.

 

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 a´pós o código. Ex.: 10h, A9h, 3h, 0101h, 1110h. Também poderá acontecer de o número 16 ser colocado após o código. Ex.: 4C9916

  Em códigos usando base 2 terá a letra "b" minúscula ou o sifrão ($) após o código. Ex.: 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.

 

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:

  Observe que bit se escreve com a letra b minúscula e a abreviação também é 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 5:

  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:

 

 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 vocês verem que não é tão difícil parar de falar "GigaBytes" e passar a falar "GibiBytes".

   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.

  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 for um arquivo de vídeo com a resolução 854 x 480, por exemplo, como foi dito, cada quadro tem 3.279.360 bits e 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. Fique tranquilo que esse tema será super detalhado!

 

  E aí? o que achou do artigo? Ficou com dúvidas? Tem alguma sugestão? Fique a vontade para comentar e escrever para hardwarecentrallr@gmail.com

  Com este artigo ficará mais fácil de compreender o texto sobre Clock e os próximos sobre barramentos e conexões! Não perca os próximos artigos!

  Não se esqueça de compartilhar e curtir, se você gostou!

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: 17 de Março de 2018.

Please reload

© 2019 Hardware Central Tecnologia Entretenimento e Comunicação do Brasil Ltda. Todos os direitos reservados.

Wix Editor / Revisão da web page: 3.0/2019 (07/10/19)