É verdade que 1 MB pode significar 1000000 bytes, 1024000 bytes ou 1048576 bytes? [duplicado]

63

Possível duplicado:
Qual é a diferença entre um kibibyte, um kilobit e um kilobyte?

Se 1 KB (kilobyte) pode significar 1000 bytes ou 1024 bytes,

E 1 MB (megabyte) pode significar 1000 KB ou 1024 KB,

isso não significa que 1 MB pode significar qualquer um dos quatro abaixo? :

  1. 1000 × 1000 = 1000000 bytes

  2. 1000 × 1024 = 1024000 bytes

  3. 1024 × 1000 = 1024000 bytes

  4. 1024 × 1024 = 1048576 bytes

Ou 2. e 3. não são aceitos, então 1 MB pode significar apenas 1000000 bytes de 1048576 bytes?

Pacerier
fonte
3
Você sabia que existem −0 (zero negativo) e +0 (zero positivo)? pt.wikipedia.org/wiki/Signed_zero
Mar
4
O único lugar em que vi diferentes prefixos misturados são os disquetes de 1,44 [algo que não é mebibyte nem megabyte].
precisa saber é o seguinte
Aki sim, mas eu não entendo o que você está tentando dizer?
Pacerier 01/01
"Se os números não são bonitos, não sei o que é." - Paul Erdős
Mar
4
Por favor, 'kB', não 'KB'.
Andreas Rejbrand

Respostas:

107

Primeiro, existem dois tipos de prefixo ao falar sobre informações digitais ( bytes de leitura ): prefixos SI e prefixos binários .

Prefixos SI

Os prefixos de SI são potências de 1.000 (1.000 1 , 1.000 2 , 1.000 3 etc.):

  • 1 kB = 1 kilobyte = 1.000 1 bytes = 1.000 bytes;
  • 1 MB = 1 megabyte = 1.000 2 bytes = 1.000.000 bytes;
  • 1 GB = 1 gigabyte = 1.000 3 bytes = 1.000.000.000 bytes;
  • e assim por diante .

Como você pode ver, apenas os símbolos SI mega e acima estão em maiúsculas. Portanto, KB não é um prefixo válido .

Prefixos binários

Prefixos binários são potências de 1.024 (1.024 1 , 1.024 2 , 1.024 3 , etc.):

  • 1 KiB = 1 kibibyte = 1.024 1 bytes = 1.024 bytes;
  • 1 MiB = 1 mebibyte = 1.024 2 bytes = 1.048.576 bytes;
  • 1 GiB = 1 gibibyte = 1.024 3 bytes = 1.073.741.824 bytes;
  • e assim por diante .

Como você pode ver aqui, todo símbolo binário é maiúsculo e um i minúsculo é adicionado antes do símbolo B para indicar que estamos falando de kibibytes em vez de kilobytes, mebibytes em vez de megabytes, etc.


No entanto , os prefixos binários não são amplamente utilizados, o Windows não os utiliza.

O que acontece aqui é que o Windows nos diz que a unidade de disco rígido tem uma capacidade de 300.066.795.520 bytes, que, de acordo com o Windows, é igual a 279 GB. No entanto, sabemos que se 1.000.000.000 de bytes = 1 GB, 300.066.795.520 bytes = ~ 300 GB = ~ 279,5 GiB .

Portanto, se você vir 1 KB (o que está errado, lembre-se) ou 1 MB, suponha que estamos falando respectivamente de 1 kibibyte e 1 mebibyte. Kb , kb , Gb , gb , etc. também são frequentes, mesmo que representem bits (8 bits = 1 byte).


Em suma , em nenhum caso 1 KB ou 1 MB pode ter vários valores, mesmo que o uso (ruim) pareça dizer o contrário.

seriousdev
fonte
3
Talvez você deva acrescentar que, quando se fala em taxas de transferência de dados (em bits / s), normalmente se usa prefixos de base 10, por exemplo, Gb / s realmente significa "um bilhão de bits por segundo".
Frank
3
Os prefixos binários são relativamente novos, e ainda é muito comum usar os prefixos SI para se referir a potências de 2. Acho que muitas pessoas nem sequer estão cientes dos prefixos binários. A @Novox faz uma boa observação: mesmo as pessoas que usam GB com 1048576 bytes de armazenamento normalmente usam Gb / s com 1000000000 bits por segundo. A invenção dos prefixos binários não tornou todo o uso consistente.
9301 Keith Thompson
5
@kubanczyk: Não discordo de que é preguiça - mas a preguiça não é necessariamente uma coisa ruim. Nós precisa uma maneira de se referir ao armazenamento em unidades de 1024, 1.048.576, ou 1073741824 bytes, e antes de o (relativamente recente) invenção dos prefixos binários (Ki, Mi, Gi), re-utilizando os prefixos SI (K, M, G) foi a única maneira razoável de fazer isso. E fizemos isso por tantos anos que os prefixos K, M, G ainda são ambíguos. Teria sido melhor usar prefixos binários e SI de maneira consistente desde o início, mas não foi o que aconteceu.
Keith Thompson
2
@kubanczyk Não me interpretem mal, sou um forte defensor do uso correto da unidade. Ainda assim, não acho que "seja óbvio". Se realmente fosse, não haveria perguntas como essa, certo?
Frank
3
Hummm, vamos tentar o contrário, não é? Veja o que aconteceu com 8 bits. Em vez de chamá-lo de decabito e insistir que deca significa, às vezes, em TI 8 e não 10, alguém inventou um novo termo e o chamou de byte. Voila! Mesma solução era possível com 1024 se não 65536.
kubanczyk
14

O kilobyte é uma medida base 10, portanto, 1 kilobyte = 10 com a potência de 3 = 1000 bytes.

Embora isso não seja muito preciso para medir exatamente os dados físicos, pois eles são armazenados em binários, medidos na base 2, e, portanto, o kibibyte foi estabelecido em 1999 para substituir o kilobyte quando usado no contexto da ciência da computação com 1024 bytes.

Kibibyte é uma medida de base 2, portanto, 1 kibibyte = 2 com a potência de 10 = 1024 bytes.

O mesmo se aplica ao megabyte (1 megabyte = 10 à potência de 6 = 1000000 bytes), cuja medição da base 2 é mebibyte (1 mebibyte = 2 à potência de 20 = 1048576 bytes)

  • (1) aplica-se ao megabyte
  • (2) e (3) não é aceito
  • (4) aplica-se ao mebibyte
asdjaputra
fonte
13
Embora isso seja tecnicamente correto, gostaria de salientar que, em uso comum, ninguém diz kibibyte ou mebibyte e, quando se fala em 'kilobytes', as pessoas se referem à unidade que o Windows ou o OS exibe, que são kibibytes. O único lugar em que regularmente vejo kilobytes usados ​​corretamente é em capacidades de disco rígido, o que frustra os usuários sem fim.
Darth Android
4
Sim, mas apenas porque o sistema operacional deles não usa os prefixos do SI "corretamente".
Frank
2
Ainda assim, MB pode significar 1.000.000 ou 1.048.576 bytes . Embora não esteja correto , é generalizado. CC @DarthAndroid
Daniel Beck
Ah, 1998 ... quando Plutão era um planeta e um kilobyte tinha 1024 bytes.
Skrymsli
9

Atualmente, o uso de "KB", "MB", etc, significa algo além de 1000 bytes, 1000 x 1000 bytes, etc, está obsoleto e é contrário à maioria dos padrões oficiais. A nova maneira de expressar 1024 bytes, 1024 x 1024 bytes, etc. é KiB (kibibyte), MiB (mebibyte), etc. É uma bagunça, e o contexto é essencial para entender o que se entende. Veja http://en.wikipedia.org/wiki/Kibibyte para uma discussão sobre esses problemas.

kreemoweet
fonte
7

Provavelmente não, porque seria um uso inconsistente dos prefixos em um único número .

Embora o prefixo do SIk represente 1000, mas em TI costuma ser usado como 1024 (com alguns prefixos binários ), não faz sentido alternar entre esses significados no mesmo número .

Daniel Beck
fonte
@JdeBP: Nota interessante. Ele teria sido "correta" (no sentido de base 2) para dizer 1440 KB. Eu nunca havia pensado / percebido a mistura dos dois "sistemas" no número 1,44. +1.
BillP3rd
3

Você está correto em sua pergunta. 1 e 4 estão corretos, 2 e 3 não.

Basicamente, você define o "mil" que é 1000 ou 1024 e o usa para as multiplicações. Eles não são trocados.

Na base dois (binária), o mais próximo possível de 1000 é 1024 (2 ^ 10). É assim que os computadores pensam sobre as coisas; portanto, na memória (RAM), por exemplo, 1 MB seria 1048576 bytes.

Na base 10, no entanto, é possível ter 1000. As unidades de disco funcionam assim e em um HDD, normalmente 1 MB terá 1000000 bytes (embora o estado sólido funcione em binário).

Basicamente, tudo se resume ao fato de que o computador e o dispositivo de armazenamento geralmente funcionam de maneira um pouco diferente, portanto, existem definições diferentes para a mesma coisa.

James Billingham
fonte
1

Então, aqui está o acordo. (A maioria dos) computadores de hoje funcionam na base 2, não base 10. (Sim, eu sei que são exceções, mas elas realmente são casos excepcionais.) Para os nossos (seus) propósitos, todos os computadores de uso geral (e, certamente, todo o uso do consumidor computadores de uso geral) usam a base 2 para todo o processamento interno. A unidade fundamental é um pouco que pode ser zero ou um. Oito destes juntos formam um byte; 16 uma palavra. Agora, isso geralmente é ... computadores de 32 bits geralmente são usados ​​como "palavras" de 32 bits, computadores de 64 bits, palavras de 64 bits e assim por diante. Você percebeu? Estes são todos os poderes de 2. Um computador com um "K" ou kilobyte de memória sempre terá 1024 bytes de memória. Um megabyte de memória sempre significa 1024 x 1024 bytes. Novamente, todos são potências de 2. Portanto, um computador com 64 MB de memória sempre terá 64 x 1024 x 1024 bytes. Quando você vê computadores anunciados para venda, a capacidade de memória (RAM) sempre se baseia em potências de 2. Você nunca verá uma placa de vídeo, por exemplo, reivindicando 1 GB de RAM com um bilhão de bytes.

Onde a confusão foi introduzida, e o que deixa as pessoas loucas, é quando os fabricantes de unidades de disco, em sua busca para oferecer unidades cada vez maiores, dizem: "Ei! Você sabe, em outras áreas (não computadores), um K é 1000 e um M é 1.000.000. " Se dois caras discutissem o preço de venda de um carro, por exemplo, e um sugerisse: "Acho que '8K' parece certo", o outro entenderia automaticamente que '8K' significava US $ 8.000 (não US $ 8.192). Então, esses fabricantes de unidades de disco disseram: "Vamos começar a anunciar nossos produtos usando essas medidas para que soem maiores". Mas os advogados entraram em cena e disseram: "Espere um pouco aqui. Praticamente todos que, você sabe,como eles funcionam vai chorar. "Para que aqueles espertos publicitários responderam:" Não há problema. Bem, basta colocar um pequeno asterisco ao lado da capacidade na caixa e em nossa documentação que diz algo como '* 1GB = 1.000.000.000 bytes'. Problema resolvido."

Então aqui estamos nós, com toda essa confusão. Citando o artigo da wiki acima, referenciado por @kreemoweet,

Na maioria dos casos, o kilobyte continua a ser usado para se referir a uma potência de dez e também a uma potência de dois.

E a confusão continua. Para propósitos práticos, você provavelmente deve assumir que as capacidades do disco são baseadas nas 10 unidades de medida básicas. Da mesma forma, as capacidades de RAM (provavelmente) sempre serão baseadas nas unidades base 2. Para outros tipos de dispositivos e produtos, provavelmente dependerá da tecnologia subjacente e do que as pessoas de publicidade pensam que podem se safar. Afinal, quanto maior, melhor, não é?

Para algumas leituras adicionais, você pode ler a Linha do tempo dos prefixos binários . Isso não tornará as coisas mais claras, mas é uma leitura divertida.

BillP3rd
fonte
2
você tem certeza de que é apenas marketing puro? talvez também esteja relacionado à estrutura / organização do próprio armazenamento.
barlop
3
-1 Não é uma coisa de marketing e não era para fazer com que as unidades de disco soassem maiores. Essa é uma explicação amplamente propagada, mas mesmo assim totalmente falsa. É também uma inferência baseada na total ignorância do assunto. A Comissão Eletrotécnica Internacional e o Instituto de Engenheiros Elétricos e Eletrônicos, na verdade, estabelecem a lógica, que consiste em fazer com que diferentes disciplinas de engenharia falem o mesmo idioma e não se confundam, em 1997, em um artigo do IEEE Standards Bearer . Essa é uma questão prática de engenharia .
JdeBP
4
Minha experiência trabalhando para a Miniscribe e mais tarde para a Maxtor nos anos 80 e 90 como engenheiro me informa o contrário. Como engenheiros de computação, tendemos a gravitar em direção a potências de 2. Um byte sempre será 8 bits. Como o @barlop acrescenta, diferentemente da memória principal do computador, as unidades de disco rotativas podem ter uma estrutura / organização amplamente diversificada. Ainda mais porque a tecnologia de acionamento avançou de tal forma que o número de setores por faixa varia da borda interna à externa da superfície de gravação. Observe que os setores ainda possuem 512 bytes. (Esse poder irritante de 2 novamente).
BillP3rd
1
Isso é falta de experiência: uma visão estreita e míope da engenharia. Vá e leia o artigo Portador de Padrões IEEE . É exatamente o tipo de piscar de olhos "Mas as pessoas sempre usam poderes de dois". pensando, isso então dá terrivelmente errado quando atinge a maioria da engenharia que não está piscando assim, que isso foi e é direcionado diretamente. Como eu disse, essa é uma questão prática de engenharia , e você demonstra ironicamente o mesmo problema a que se destinava. Não é marketing, e não se trata de fazer algo parecer maior. Isso é lixo totalmente fabricado. Não acredite.
JdeBP
1
O @JdeBP garantiu que os engenheiros definitivamente definiram os termos kibibyte etc, que são demonstráveis. E que proporção de engenheiros no mundo dos discos rígidos o usa, não sei. Eu pensaria que talvez eles soubessem por contexto o que querem dizer com kilobyte e não precisariam da boca cheia de kibibyte, ou talvez não. Parece que BillP3rd acha que eles saberiam e seria base2, e você acha que eles precisam especificar para saber entre si. Mas o marketing teria escolhido usar a unidade menor, o prefixo decimal no pacote. Eu me pergunto se o marketing estava fazendo isso mesmo antes desse artigo do IEEE.
barlop
0

Sim, pois é um desastre sintático. Este artigo da Wiki explica o problema e inclui uma tabela com as "novas" palavras a serem usadas. Aqui no mundo real, ninguém usa esses termos. Você precisa usar o contexto para determinar qual definição você está procurando.

Jim B
fonte
4
-1 para esse "ninguém". Eu os uso aqui no mundo real e estou longe de estar sozinho.
JdeBP
1
Se o consumidor médio perguntasse a um vendedor a capacidade de memória de um computador que ele estava pensando em comprar e recebessem "4 gibibytes", eles não teriam idéia do que isso significava. Da mesma forma, a grande maioria das pessoas nunca diria as palavras em voz alta "gibibyte, tibibyte, pibibyte, etc." Sério, tente dizer "gibibyte" em voz alta três vezes o mais rápido possível. Posso dizer que por mim mesmo, pelo menos, nunca os ouvi. (Para contexto, eu trabalho para uma grande empresa de software que você provavelmente já ouviu falar e rotineiramente lidar com volumes de dados em escala de terabytes e petabytes.)
BillP3rd
1 para mencionar esses termos engraçadas e que a maioria não usá-los e usar o contexto
barlop
1
"ninguém" significa "ninguém", garoto, e não é magicamente alterado por contexto para significar algo diferente do que a palavra significa. É uma falsidade, no entanto, você tenta cortá-la.
JdeBP
1
@JdeBP - desculpe Jdebp, mas o desejo não é assim. A própria existência do termo kibibyte é prova de que havia (e ainda existe) confusão sobre o que se entende. Lamento que você esteja preso a esse termo há uma década (deve ter sido difícil encontrar discos rígidos com valores de kibibyte em 2000). Eu também sugeriria que você trabalhasse na edição do artigo do wiki que referi - claramente eles também devem estar errados quanto à falta de uso (eles devem ter deixado você fora da lista de pesquisas).
Jim B