Conversor de tamanhos de dados

Converte um tamanho em unidades decimais e binárias — KB ao lado de KiB, MB ao lado de MiB — com bits, a contagem exata de bytes e o que cada SO mostra.

Bytes exatos
1,000,000,000,000
Decimal
Potências de 1000 — SI, fabricantes de discos, macOS
  • B1,000,000,000,000
  • KB1,000,000,000
  • MB1,000,000
  • GB1,000
  • TB1
Binário
Potências de 1024 — IEC, Windows, RAM
  • KiB976,562,500
  • MiB953,674.3164
  • GiB931.3226
Bits
Potências de 1000 — as velocidades de rede são sempre decimais
  • bit8,000,000,000,000
  • Kb8,000,000,000
  • Mb8,000,000
  • Gb8,000
  • Tb8
Como as suas ferramentas vão mostrar isto

Os mesmos bytes, cinco leituras. Nenhuma está errada; discordam no divisor, no rótulo, ou em ambos.

  • Explorador do Windows — divide por 1024 e mantém os rótulos decimais931 GB
  • Finder do macOS — divide por 10001 TB
  • ls -lh, du -h — dividem por 1024932G
  • ls --si, du --si — dividem por 10001.0T
  • Fabricantes de discos e pens USB — dividem por 10001 TB

O que esta ferramenta faz

Escreva um tamanho em qualquer unidade — 1 TB, 1536 MiB, 900 Mb, ou simplesmente um número de bytes em bruto copiado de uma listagem de ficheiros — e ele volta convertido nos dois sistemas de unidades ao mesmo tempo, juntamente com a contagem exata de bytes e a forma como cada ferramenta da sua máquina o vai mostrar.

Os dois sistemas aparecem lado a lado e não atrás de um interruptor, porque toda a dificuldade dos tamanhos de dados está em que ambos estão em uso e ambos se chamam a mesma coisa. Um número sozinho não lhe diz qual deles o produziu.

Porque um kilobyte tem dois significados

Os computadores endereçam a memória em potências de dois, pelo que 1024 é um número redondo natural para uma máquina de um modo que 1000 nunca será. Cedo se pediu emprestada a palavra «quilo» para 1024 porque estava perto o suficiente do milhar do SI e ninguém esperava que os dois se afastassem. Afastaram-se.

O erro é pequeno na ponta de baixo e acumula-se a cada degrau. Um kilobyte difere 2,4%, um megabyte 4,9%, um gigabyte 7,4%, um terabyte 10%. No petabyte as duas respostas distam 12,6%, e isso já não é um pormenor de arredondamento:

KB    1,000                 KiB    1,024                 # 2,4% de diferença
MB    1,000,000             MiB    1,048,576             # 4,9%
GB    1,000,000,000         GiB    1,073,741,824         # 7,4%
TB    1,000,000,000,000     TiB    1,099,511,627,776     # 10,0%

Em 1998 a IEC deu às potências de 1024 nomes próprios — kibibyte, mebibyte, gibibyte, e os símbolos KiB, MiB, GiB — precisamente para que a ambiguidade pudesse ser escrita e afastada. Os nomes nunca pegaram no uso corrente, mas os símbolos sim, e tudo o que traz a etiqueta KiB é inequívoco. Tudo o que traz KB continua a não ser.

Quem conta de que maneira

A divisão não é aleatória. Cai aproximadamente sobre a linha entre o hardware que se endereça e o hardware que se vende:

  • A RAM é sempre binária. Um módulo de memória de 16 GB é 16 GiB, porque a memória é endereçada por linhas e colunas binárias e não poderia ser um número decimal redondo nem que tentasse.
  • Os discos são sempre decimais. Um fabricante que vende um disco de 1 TB quer dizer 1 000 000 000 000 de bytes, e assim é desde muito antes de alguém se queixar.
  • O Windows é binário mas usa as etiquetas decimais. Divide por 1024 e escreve GB, e daí vem a maior parte da confusão que as pessoas realmente sentem.
  • O macOS é decimal desde o Snow Leopard em 2009. O mesmo disco que marca 931 GB no Windows marca 1 TB num Mac, e nenhuma das máquinas está avariada.
  • As ferramentas de linha de comandos do Linux dão as duas: ls -lh e du -h dividem por 1024, e a opção --si nesses mesmos comandos divide por 1000.
  • As redes são sempre decimais, e contam bits em vez de bytes.

O disco de 1 TB que aparece como 931 GB

Esta é de longe a pergunta mais frequente sobre tamanhos de dados, e a resposta é que não falta espaço nenhum. O disco contém exatamente o que a caixa dizia. Só que o Windows divide esses bytes por 1024 três vezes em vez de por 1000, e depois imprime um rótulo que diz outra coisa.

1,000,000,000,000 bytes         # o que o fabricante vendeu
/ 1024 = 976,562,500 KB         # o Windows divide uma vez
/ 1024 = 953,674.32 MB          # duas vezes
/ 1024 = 931.32 GB              # três vezes, e rotula GB

O disco não é mais pequeno do que o anunciado e o sistema operativo não mente sobre a contagem de bytes. A única coisa errada é o rótulo: aquilo a que o Windows chama 931 GB são na verdade 931 GiB, e 931 GiB são 1 TB. Cole qualquer tamanho nesta ferramenta e as duas colunas mostram essa relação diretamente.

Bits e bytes, e o fator de oito

Um byte são oito bits, e os dois distinguem-se por escrito apenas pela caixa de uma letra: um B maiúsculo significa bytes, um b minúsculo significa bits. Mb e MB diferem por um fator de oito, mais do que suficiente para tornar um cálculo absurdo.

Isto conta sobretudo nas velocidades de rede, citadas em bits por segundo enquanto os tamanhos de ficheiro e o progresso das transferências vão em bytes. Uma ligação de 100 Mb/s move no máximo 12,5 MB/s, por isso um ficheiro de 1 GB demora cerca de 80 segundos e não os 10 que os números parecem prometer. Nada o está a travar; as unidades nunca foram as mesmas.

Os bits são mostrados aqui apenas no sistema decimal, e isso não é uma simplificação. As velocidades de rede definem-se em potências de dez, pelo que um megabit é um milhão de bits em todo o lado onde o termo é usado. A IEC define de facto unidades binárias de bits, mas praticamente nada as usa, e oferecê-las convidaria a uma conversão que ninguém pretende.

Porque os números aqui são exatos

Os números do JavaScript só guardam inteiros de forma exata até cerca de nove mil biliões — 2^53. Um exabyte são 10^18, bem acima disso, pelo que um conversor construído sobre aritmética vulgar começa a perder algarismos precisamente onde vivem as perguntas sobre armazenamento grande, e relata uma contagem de bytes confiantemente errada nas últimas casas.

Aqui tudo usa inteiros de precisão arbitrária em vez disso. Isso traz ainda algo menos óbvio: como todos os fatores envolvidos são potências de dez ou de dois, e ambas dividem exatamente alguma potência de dez, cada conversão entre estas unidades termina como um decimal finito. 1 TB não é aproximadamente 931,32 GiB — é 931,322574615478515625 GiB, sem resto. As linhas aqui são arredondadas para leitura, e a contagem de bytes acima delas é a resposta inteira.

Perguntas frequentes

Um kilobyte são 1000 bytes ou 1024 bytes?
Ambos, consoante quem conta. O SI e os fabricantes de discos usam 1000; o Windows e os tamanhos de RAM usam 1024. A IEC dá nome próprio às unidades de 1024 — kibibyte, mebibyte, gibibyte — o que remove a ambiguidade, embora as etiquetas antigas continuem por todo o lado. Esta ferramenta mostra as duas leituras ao mesmo tempo em vez de escolher uma.
Porque é que o meu disco de 1 TB só mostra 931 GB?
Não falta nada. O fabricante vendeu-lhe 1 000 000 000 000 de bytes, contados em potências de 1000. O Windows divide isso por 1024 três vezes, obtém 931,32, e depois rotula o resultado como GB. Os mesmos bytes, outro divisor, um rótulo enganador: o que lhe está a mostrar são na verdade 931 GiB.
Qual é a diferença entre MB e MiB?
Um megabyte são 1 000 000 de bytes e um mebibyte são 1 048 576 bytes, por isso o MiB é cerca de 4,9% maior. O MiB é inequívoco por definição; o MB só o é se souber que convenção segue a ferramenta que o imprimiu.
Porque é que a minha transferência é mais lenta do que a velocidade da ligação?
Normalmente porque as duas se medem em unidades diferentes. As velocidades de ligação citam-se em megabits por segundo e as transferências em megabytes por segundo, e há oito bits num byte. Uma linha de 100 Mb/s chega no máximo a cerca de 12,5 MB/s.
O que significa realmente um limite de envio ou de alojamento de 25 MB?
Depende do serviço, e a suposição segura é o número menor. Se o limite for aplicado como 25 × 1 000 000 de bytes, um ficheiro pouco abaixo de 25 MiB será recusado. Converter o tamanho do seu ficheiro nas duas colunas mostra de imediato se passa as duas leituras.
Lida com tamanhos muito grandes?
Sim. A aritmética usa inteiros de precisão arbitrária, por isso exabytes, zettabytes e yottabytes convertem-se exatamente em vez de perderem os últimos algarismos como fazem os números de vírgula flutuante para lá de 2^53.
Alguma coisa do que escrevo é enviada para um servidor?
Não. É aritmética no seu navegador; nada é carregado nem registado, e funciona sem ligação de rede.