Confusão com capacidade de armazenamento (potências de 10 e 2) [duplicado]

23

Eu estava olhando para um disco rígido e encontrei um documento (da Toshiba, link: HDD SATA de 2,5 polegadas mq01abdxxx ) que diz:

"Um Gigabyte (1GB) significa 10 ^ 9 = 1.000.000.000 bytes usando potências de 10. Um sistema operacional de computador, no entanto, relata a capacidade de armazenamento usando potências de 2 para a definição de 1GB = 2 ^ 30 = 1.073.741.824 bytes e, portanto, mostra menos armazenamento capacidade."

Então potências de 10 são maiores que potências de 2, OK.

Exemplo 10 ^ 2 = 100 e 2 ^ 2 = 4.

Mas não entendo o documento que diz a mesma capacidade de armazenamento:

1 GB tem 1.000.000.000 de bytes (potências de 10) e 1.073.741.824 bytes (potências de 2); em seguida: mostra menos capacidade de armazenamento (potências de 2). Por que é menos? Se eu ver 1 GB a mais de capacidade de armazenamento em potências de 2 do que em potências de 10.

learnprogramming
fonte
13
"Por que é menos? Se eu ver por 1 GB mais capacidade de armazenamento em potências de 2 do que potências de 10." Sua altura em polegadas fornece o número menor que a mesma altura em centímetros, apenas porque há mais "capacidade de comprimento" em polegadas do que em centímetros. Portanto, para o valor fixo expressar: quanto maior a unidade, menor o número.
Kamil Maciorowski 25/05
4
Não é menos, é o mesmo valor, representado por duas bases diferentes.
Ramhound 25/05
2
Você não pode simplesmente dizer que 10 ^ 2 - 100 e 2 ^ 2 = 4. Você tem que calcular o que 100 seria na base 2.
Ramhound
4
"Um sistema operacional de computador" - o meu não ... Ou, na verdade, ele usa MB (base10) na GUI, mas MiB (base2) na CLI. Apenas para manter as coisas interessantes.
Marcelm
2
Eles estão dizendo que "potências de 10" são menores que as potências de magnitude semelhantes de 2. Por exemplo, 1000 (10 ^ 3) <1024 (2 ^ 10). E 1000000 (10 ^ 6) <1048576 (2 ^ 20). Portanto, para um fabricante de unidades, seu disco rígido de 1 terabyte possui (pelo menos) 1.000.000.000 de bytes (e na verdade um pouco mais), enquanto que para um utilitário de sistema operacional que relate o espaço de 1 terabyte é 1.099.511.627.776 bytes. Portanto, o sistema operacional reportará seu disco rígido de 1 TB como 931 GB ou um pouco mais. (Ou talvez não, ver @marcelm acima.)
davidbak

Respostas:

58

O motivo histórico do uso de potências de 2 é que a memória e o disco rígido são acessados ​​pela CPU usando um espaço de endereço composto por linhas no código binário. Os fabricantes de hardware decidiram os nomes desta maneira:

2^10 = 1024 and as it's almost 1000 then call it 1 Kilobyte

2^20 = 1048576 bytes and as it's almost 1000000 then call it 1 Megabyte

Para o usuário normal, é um absurdo e complicado. Além disso, os prefixos "kilo", "mega" etc. entram em conflito com o padrão International System of Units (SI) onde "1 kiloWatt" significa 10 ^ 3 ou 1000 Watts.

Para resolver o problema, em 2000, a Comissão Eletrotécnica Internacional (IEC) propôs um esquema de notação para as unidades baseadas em potências de 2 na norma ISO / IEC 80000-13 .

Os novos nomes foram criados substituindo a segunda sílaba no nome antigo por 'bi' (referindo-se a '2'). Um kilobyte agora deve ser um kibibyte e assim por diante. As novas unidades também receberam símbolos correspondentes, então agora '10 kibibyte' é escrito como 10 KiB em vez de 10 kB . Esta é a tabela de correspondência:

Notation      Symbol    Value
1 kilobyte    1 kB      10^3  = 1000 bytes
1 megabyte    1 MB      10^6  = 1000000 bytes
1 gigabyte    1 GB      10^9  = 1000000000 bytes
1 terabyte    1 TB      10^12 = 1000000000000 bytes


1 kibibyte    1 KiB     2^10 = 1024 bytes
1 mebibyte    1 MiB     2^20 = 1048576 bytes
1 gibibyte    1 GiB     2^30 = 1073741824 bytes
1 tebibyte    1 TiB     2^40 = 1099511627776 bytes

16 anos depois, muitos fornecedores de hardware e software ainda se referem às unidades de base 2 com seus nomes de SI . Um "megabyte" pode significar 1000000 bytes ou 1048576 bytes.

Se você comprar um disco rígido de 100 GB, a capacidade será de 100x10 ^ 9 ou 10 ^ 11 bytes. Mas, e este é o grande, mas, o sistema operacional relatará apenas a unidade como tendo uma capacidade de 93 GB (10^11)/(2^30). Você comprou uma unidade de 100 gigabytes , equivalente a uma unidade de 93 gibibytes . O sistema operacional é aquele que usa a notação errada.

Os fabricantes de unidades ocultam esse problema com isenções de responsabilidade e explicações que sempre levam à conclusão de que "a capacidade formatada real pode ser menor".

jcbermu
fonte
1
Comentários não são para discussão prolongada; esta conversa foi movida para o bate-papo .
Journeyman Geek
21

Em resumo: era tudo sobre marketing.

jcbermu explicou bem, mas não concordo com as razões por trás de tudo isso.

Enquanto qualquer sistema de informática usa o sistema binário, os bits e bytes são escritos como ^ 2, o que é normal. Portanto, não é o sistema operacional ou o software o culpado pela confusão. Tudo é binário aqui.

É culpa dos fabricantes de HDD indicar as capacidades do HDD no sistema ^ 10, o que lhe rouba alguns GB práticos. Um disco rígido de 20 GB poderá armazenar 18 GB e assim por diante ... uma unidade de 1 TB será realmente de ~ 930 GB. A zombaria dos 'bibytes' foi inventada para tentar evitar parte da confusão, mas praticamente não foi adotada.

Overmind
fonte
10
É porque os bytes no disco "se estabeleceram após o envio".
Davidbak 25/05
2
Verdade. Eu nunca ouvi alguém dizer "eu atualizei para 16 gibi de RAM". Eu não acho que os fabricantes sejam responsáveis ​​pela bagunça, mas eles lucram com certeza. Nos anos 80 e 90, os usuários de computadores sabiam qual é a diferença entre quilograma e kilobyte e por quê. Hoje em dia, quem sabe que os computadores funcionam com aritmética binária?
Crowley
4
Não se trata de marketing, e nunca foi. Discos rígidos e disquetes sempre foram vendidos usando o prefixo SI real, porque nunca fazia sentido usar outra base.
pipe
1
-1, terrível. It's the fault of HDD manufacturers to state the HDD capacities in ^10 system, which robs you of quite some practical GB.Não, nenhuma dessas coisas é verdadeira. Os fabricantes de HD são os que têm feito tudo certo o tempo todo, usando a definição correta e correta das unidades. Não é culpa deles que desenvolvedores, fabricantes de memória e quem mais estiver usando as unidades SI de maneira imprecisa. E, é claro, em que unidade o espaço de armazenamento é medido não "rouba alguns GB práticos" ou realmente altera a capacidade de qualquer maneira.
HopelessN00b
1
@pipe: um disquete de 720KB continha exatamente 1.440 blocos de 512 bytes cada. Da mesma forma com outros tamanhos medidos em KB. Até onde eu sei, o significado mais comum de "MB" com mídia de armazenamento magnético era 1.024.000 bytes, criando um disquete de 1,44 MB exatamente o dobro do tamanho de 720 KB.
Supercat
16

A resposta de jcbermu é boa, mas quero abordar isso de um ângulo diferente.

1 GB tem 1.000.000.000 de bytes (potências de 10) e 1.073.741.824 bytes (potências de 2); em seguida: mostra menos capacidade de armazenamento (potências de 2). Por que é menos? Se eu ver 1 GB a mais de capacidade de armazenamento em potências de 2 do que em potências de 10.

Uma mídia de armazenamento - qualquer mídia de armazenamento - pode armazenar um número específico de bits acessíveis. Geralmente, na computação de uso geral, ela é expressa como bytes ou vários bytes, mas se você começar a observar, por exemplo, ICs de memória (circuitos integrados, chips), verá a capacidade de memória expressa em termos de bits acessíveis.

Um disco rígido armazenará um número específico de bits ou bytes que, por razões técnicas, são abordados em termos de setores. Por exemplo, uma unidade de 4 TB pode ter 7.814.037.168 setores de 512 bytes cada, o que resulta em uma capacidade de armazenamento de 4.000.787.030.016 bytes. Isso é o que você realmente recebe. (Na prática, você perde um pouco disso para as informações contábeis do computador: sistema de arquivos, diário, particionamento, etc. No entanto, os bytes ainda estão lá, você não pode usá-los para armazenar arquivos, porque eles são necessários para armazenar os dados que permitem efetivamente armazenar os arquivos.)

Obviamente, o número 4.000.787.030.016 é um tanto pesado. Por esse motivo, optamos por representar essas informações de outra maneira. Mas, como ilustrado por jcbermu, optamos por fazê-lo de duas maneiras diferentes: em potências de dez ou potências de dois.

Em potências de dez, 4.000.787.030.016 bytes são 4.000787030016 * 10 ^ 12 bytes, o que é bastante bom; com quatro dígitos significativos, arredonda para 4.001 TB, para a definição SI de "tera": 10 ^ 12. Nosso disco rígido pode armazenar mais de 4 * 10 ^ 12 bytes; portanto, em termos de SI, é um dispositivo de armazenamento de 4 terabytes.

Em potências de dois, 4.000.787.030.016 bytes são 3.638694607 * 2 ^ 40 bytes, que não são arredondados tão bem. Também parece uma quantidade menor, porque 3.639 é menor que 4.001, e isso é ruim para o marketing (quem quer comprar uma unidade de 3,6 TB quando o fabricante ao lado vender uma unidade de 4,0 TB pelo mesmo preço?). Este é o prefixo binário 3.6 "tebibytes", onde o "bi" indica que é uma quantidade de base dois.

Na realidade, porém, é exatamente o mesmo número de bytes; o número é expresso apenas de forma diferente! Se você fizer as contas novamente, verá que 3.638694607 * 2 ^ 40 = 4.000787030016 * 10 ^ 12, para obter a mesma capacidade de armazenamento no final.

um CVn
fonte
1
Bem explicado, mas o número de setores (como 7,8 [...] no seu exemplo) é escolhido pelos fabricantes para que a capacidade acabe no valor desejado. Eles poderiam fazer 8 bilhões de setores, 8589934592 ou qualquer outro número, para acabar com um verdadeiro valor de capacidade, mas isso não é bom para os negócios. Como a diferença é tecnicamente possível, como fabricante eu faria um grande sucesso no mercado: um logotipo TrueCapacity (r) ou TrueSpace (r) e é garantido que as vendas aumentariam devido a essa manobra de marketing e o (s) outro (s) fabricante (s) tem que seguir (e estaria despreparado para fazê-lo).
Overmind
@ Overmind: Essa é uma técnica de marketing possível. Semelhante às Comunicações Aéreas que tinham cobrança por segundo (antes da compra da T-Mobile). Se você estivesse encarregado do marketing de um fabricante de dispositivos de armazenamento, eu acho que essa estratégia poderia ser uma que você decide seguir.
TOOGAM
Encontrei esta resposta para me fornecer a maior clareza (talvez). Portanto, não há necessidade real de ser uma potência de 2? Não há nada de especial na maioria dos tamanhos médios de armazenamento sendo potências de 2?
Abdul
1
@Abdul A maioria dos dispositivos de armazenamento (de consumo) possui capacidades acessíveis ao usuário que não são , em termos de bytes (ou implicitamente também bits), uma potência de dois. Como Overmind mencionado acima, as capacidades exatas dos HDDs podem ser amplamente selecionadas aleatoriamente, desde que atendam aos requisitos de marcação. Os SSDs tendem a estar mais próximos de 2 ^ n, porque os chips de memória flash são fabricados em tamanhos que geralmente possuem potências inteiras de dois (porque eles têm linhas de endereço e coisas que tornam isso uma vantagem), mas devido ao excesso de aprovisionamento, nem toda a capacidade do flash estará acessível a partir de software externo ao controlador flash embutido.
a CVn 01/06
5

Outras respostas abordaram a razão histórica da diferença, mas parece-me que você está perguntando sobre a diferença de acordo com a matemática.

Você está certo de que uma potência de 10 é maior que uma de 2 e, inversamente, um gigabyte (10 ^ 9 bytes) é menor que um gibibyte (2 ^ 30 bytes).

A reversão de tamanhos é explicada pelo fato de que existem mais potências em um gibibyte (30 potências) do que em um gigabyte (9 potências). Acontece que o número de potências tem um efeito maior no tamanho final do que o tamanho de cada potência individual.

Quanto ao motivo pelo qual o tamanho relatado de um disco é menor quando medido em gibibytes (2 ^ 30) do que quando medido em gigabytes (10 ^ 9), é natural do que ao medir uma quantidade fixa que uma unidade de medida maior fornece um número menor . Por exemplo, considere a altura em polegadas e a altura em centímetros. Como uma polegada é maior que um centímetro, a mesma altura medirá menos polegadas (por exemplo, 72 polegadas) do que centímetros (por exemplo, 183 centímetros). A altura é a mesma distância física nos dois casos, mas cada medida fornece apenas um número diferente de acordo com a unidade de medida.

Edward Peek
fonte