Qual é a origem de K = 1024? [fechadas]

73

Por que existe a discrepância no número de bytes em um kilobyte? Em alguns lugares, vi o número 1024 (2 10 ), enquanto em outros é 1000 (e a diferença se torna cada vez maior com M, G, T, etc.).

Esta não é uma discussão sobre se deve ser 1024 ou 1000 (embora você possa discuti-lo nos comentários), mas sobre onde / quando essa situação se originou e / ou se generalizou.

Até onde eu sei, os fabricantes de Linux e hardware nunca usam a variante 1024. Isso e boatos me fazem pensar que o MS-DOS tornou essa versão comum, mas quais são os fatos?

Bart van Heukelom
fonte
23
Uma representação é em binário (2 ^ 10, ou 1024), enquanto a outra está em decimal (10 ^ 3 ou 1000) ...
Trezoid
13
Se você está procurando pessoas específicas para culpar, aponte para os fabricantes de discos rígidos. Faz com que seus dispositivos pareçam ter mais capacidade quando expressos em MB decimais, GB, etc. Eles sempre fizeram isso, acredito, mas não foi até recentemente que a diferença entre decimal e binário cresceu bastante o suficiente para importar significativamente.
LawrenceC
23
@ultrasawblade: Você quer culpar os fabricantes de HDD por serem um dos únicos grupos que usam o termo gigabytecorretamente?
Paradroid 23/05
13
Sempre me pareceu entender que 1K = 1024 com qualquer coisa relacionada a computadores antes de mais ou menos 20 GB de unidades se tornou comum. Isso também coincide aproximadamente com o momento em que muitas pessoas não técnicas começaram a usar PCs regularmente. Vastas quantidades de literatura computacional (técnica e não técnica) do início dos anos 90 e antes não mencionam nada sobre KBs "decimais" ou "kibibytes".
LawrenceC
13
@paradroid: gigabyte originalmente significa 1024 mb (e mb = 1024 kb, etc). Foi retconned para significar 1000 porque os fabricantes de HDD insistiram em usá-lo errado. Evidentemente, isto não depende do que você considera "direito" desde kilo significa 1000, mas dentro de ciência da computação, kilobyte sempre foi 1024 para razões técnicas, até que foi mudado em 1999.
James

Respostas:

63

Há muito tempo, e é detalhado aqui . Parece que você pode culpar a IBM, se alguém.

Pensando um pouco mais sobre isso, culparia os americanos como um todo, por seu flagrante desrespeito às Système international d'unités : P

paradroid
fonte
31
É sempre fácil culpar os americanos.
Notinlist
13
@ Notinlist: É uma piada.
Paradroid 23/05
5
Isso me lembra uma cena épica do filme Pulp Fiction ... Aquele com a pergunta sobre o "sistema métrico". :-)
Pierre Watelet
7
@ Notinlist É fácil sempre culpar os americanos. É por isso que fazemos tanto. Isso e o fato de que é divertido.
Singletoned
3
A entrada de 1961 é interessante, na medida em que menciona "65k" - sendo a primeira ordem de magnitude que pode mostrar uma clara diferença entre "k = 1024" e "k = 1000, arredondado", desce claramente para o último. Em 1964, por outro lado, todo mundo está usando os significados binários.
Random832
26

Toda a computação era de baixo nível no começo. E na programação de baixo nível, o número "1000" é totalmente inútil e eles precisavam de prefixos para quantidades maiores, de modo que reutilizavam os SI. Todos sabiam disso em campo, não havia confusão. Serviu bem por 30 anos ou quem sabe.

Não é porque eles eram americanos, então eles precisavam quebrar o SI a todo custo. :-)

Não há programador que eu conheça e diga kibibyte. Eles dizem kilobyte e significam 1024 bytes. Os algoritmos estão cheios dos poderes de 2. Até hoje, "1000" é um número realmente inútil entre programadores.

Dizer kibi e mibi é muito engraçado e chama a atenção do assunto. Felizmente, entregamos para os setores de telecomunicações e armazenamento em disco :-). E escreverei kibibytes em interfaces de usuário nas quais não programadores possam lê-lo.

Não está na lista
fonte
3
É ainda mais engraçado a dizer quando se fala em pedaços - "mibibit"
James
3
Eu acho que o KiB, etc, deve ser pronunciado kilobinarybyte, etc e não kibibyte.
Lie Ryan
2
@ Ryan Ryan, o uso de prefixos como "kilobinarybyte" foi uma proposta que acabou falhando e tinha abreviações diferentes das do kibibyte. Veja en.wikipedia.org/wiki/Binary_prefix
Ben Lee
3
então seria justo pronunciar km como kilodecimalmeters?
JustJeff
3
O número 1000 não é "totalmente inútil". "k = 1000" é usado na computação desde os anos 50. Os primeiros computadores eram na verdade máquinas decimais, não binárias. A velocidade da rede sempre foi medida em múltiplos de 1000. "Serviu bem por 30 anos"? Realmente? Os programadores reclamam de "k = 1024" há pelo menos 43 anos. pt.wikipedia.org/wiki/Timeline_of_binary_prefixes
endolith
8

É correto e faz sentido para o pessoal técnico usar 1024 = 1K em muitos casos.

Para os usuários finais, normalmente é melhor dizer 1000 = 1k, porque todo mundo está acostumado ao sistema de números baseado em 10.

O problema é onde traçar a linha. Às vezes, as pessoas de marketing ou publicidade não conseguem realmente "traduzir" ou adaptar dados e idiomas técnicos aos usuários finais.

mit
fonte
13
O pessoal técnico deve saber que 1024 bytes é realmente um Kibibyte (KiB), mas saiba que o termo não é conhecido por pessoas não técnicas.
Paradroid 23/05
8
Quem disse que está correto? Kilo significou 1000 para séculos, de modo IMO eles nunca deveriam tê-lo usado para 1024.
Bart van Heukelom
20
O byte não é uma unidade SI; KB significa "kilobel" (concedido, uma unidade que você nunca quer usar a menos que você estava descrevendo o som, se houver, produzida pelo Big Bang.)
Wooble
10
@njd: O C64 possui 65536 bytes de RAM. Por convenção, o tamanho da memória é especificado em kibiBytes, as taxas de transferência de dados em kilobits e o armazenamento em massa em qualquer que seja o que os fabricantes pensam agora. Os discos rígidos usam T, G, M ek no rótulo, o Windows relata o tamanho em Ti, Gi, Mi e ki. E aqueles disquetes de 1,44 MB? Esses não são 1.44MB nem 1.44MiB, são 1.44 kilokibibytes. Isso significa 1440kiB ou 1'474'560 bytes.
Terceiro
5
As variantes kiB, etc, são relativamente novas. Eu não acho que eles estavam em uso quando esse problema surgiu, certamente - fiquei com a impressão de que eles foram feitos exatamente para resolvê-lo!
Shinrai 23/05
3

Culpa os fabricantes de semicondutores (eles nos fornecem apenas hardware binário) [1]

Melhor ainda: culpe a própria lógica (a lógica binária é apenas a lógica mais elementar).

Melhor ainda: quem devemos culpar pelo miserável sistema decimal ?

Tem muito mais falhas do que o sistema binário. Foi baseado tosse sobre o número médio de dedos na espécie humana tosse

Oooo ...

[1] Eu quero meu computador quântico de três qubit !!! Agora!

ver
fonte
29
Eu acho que você vai encontrar o número médio de dedos é inferior a 10 </ pedante>
Rory Alsop
1
@Rory: ^ que foi um bom rir
Mehrdad
2
@Rory: "menos" </pedant>. Ou é? Espere um minuto, eu aargh ...
outsideblasts
1

Não se deve culpar o 1024, é realmente uma coisa muito boa, pois é a razão pela qual o computador (digital) pode ser tão rápido e eficiente quanto hoje. Como o computador usa apenas o valor 2 (0,1), remove a equação e a complexidade (imprecisão) do sistema anólogo.

Seria mais complicado se disséssemos que um kilobyte é de 1000 bits porque 2 a que potência é 1000? portanto, mesmo 1 kilobyte seria impreciso porque terá pontos flutuantes ou uma aproximação.

Mas eu culpo o marketing por vender 8 gigabytes * e adicionar isso em letras pequenas

* 1 gigabyte is 1,000,000,000 bytes. 

é realmente uma pena, é a mesma coisa com a velocidade de conexão, seu ISP dirá 1.5Mbps em vez de dizer ~ 150 kiloBytes. é muito enganoso

Ibu
fonte
3
Ao dizer o tamanho de um arquivo de 15682 bits ou a rapidez com que um arquivo pode ser transferido por uma rede, as potências de 2 não desempenham nenhum papel. E esse é o contexto em que há mais confusão.
Bart van Heukelom
2
Por fim, o arquivo é armazenado em páginas de memória, alinhadas aos limites de energia binária. Ao enviar pelo TCP, o tamanho da janela na qual os pacotes são enviados é múltiplo de potências de dois. Quando o arquivo é armazenado no disco rígido, é armazenado em blocos de potência de dois. Entendo o que você está dizendo, mas kilobyte = 1024 (ou pelo menos múltiplos de potências de dois) está arraigado na computação demais.
FryGuy
1
para ser justo, as redes sempre usaram bits como base.
Synetech
1
O primeiro disquete de 5,25 "continha 109.375 bytes e foi anunciado como" 109,4 Kbytes ". Acho que eles também fizeram isso por razões de marketing ruins? Você acha que seria mais lógico escrevê-lo como" 106,8 KB "? E unidades de fita e processador velocidades e velocidades de modem são todos medidos em decimal para nos enganar favor?.
endolith
1
@ Ibu: a diferença entre 1.000.000.000 de bytes e 1 GB é 0. Na verdade, por que os fabricantes de disquetes aumentam maliciosamente seus números quando a diferença é tão pequena? Eles não. Eles usaram 1000s porque é lógico, óbvio e correto, não porque fazem parte de uma conspiração para enganar os clientes. Os fabricantes de discos rígidos também medem em milhares de anos desde os anos MB, pelo mesmo motivo.
endolith 25/07
0

Quando você considera que os números nos computadores são binários e 2 ^ 10 é 1024, faz todo o sentido. É muito mais fácil trabalhar com 1024 do que 1000, porque você pode dividir facilmente por 1024 usando apenas matemática inteira e deslocamento de bits . Dividir por 1000 é uma operação muito mais cara, que pode precisar de matemática de ponto flutuante.

Por exemplo

bytes = 1 073 741 824
kilobytes = bytes >> 10 = 1 048 576
megabytes = kilobytes >> 10 = 1024
gigabytes = megabytes >> 10 = 1
Jo-Herman Haugholt
fonte
Você acha mesmo que o tempo de computação é relevante? Por que os computadores não processam "km" como "1024 m", então, se é tão difícil de converter?
endolith 25/07
@ Endolith Sim, acho que sim, pelo menos historicamente. Embora possa ser insignificante hoje em dia, nos primeiros dias em que todo ciclo de CPU estava em alta, um cálculo rápido e fácil que forneceu uma resposta decente seria preferível para algo assim. Especialmente se as pessoas soubessem por convenção que 1 KB significava 1024 bytes.
Jo-Herman Haugholt