Tamanhos de arquivo no Windows não fazem sentido

18

Aqui eu tenho esse arquivo no Windows:

insira a descrição da imagem aqui

Mas 62,563 bytes não é 62,6 KB?

insira a descrição da imagem aqui

Kirk Ouimet
fonte
24
Veja XKCD # 394
Nick T
11
O Mac usa kilobytes decimais (o padrão IEC), enquanto o Windows ainda usa kilobytes binários (desde que renomeados para kibibytes), o Linux geralmente se refere ao KiB (os kilobytes binários renomeados). Pessoalmente, acho que isso é tudo estragado. Não se compra um pedaço de RAM com 1.000.000.000 de bytes, mas compra um pedaço de RAM com 1.073.741.824 bytes. Mas quando você compra um disco rígido, você o compra com 500.000.000.000 bytes disponíveis, mesmo que os setores sejam alocados em múltiplos de 512 bytes. Eu gostei dos meus kilobytes quando eram binários ...
phyrfox
1
@phyrfox: 1 MHz de CPU é de 1 milhão de ciclos, não 1.073.741.824 ciclos. 1 Mbps de tráfego de rede também é de 1 milhão de bits.
Zan Lynx
3
O @ZanLynx Mega não é de 1 milhão, é "ótimo" adaptado do grego. Além disso, como são, os prefixos do SI só fazem sentido com unidades físicas. Mas bytes e bits não são unidades físicas. Além disso, como os prefixos de SI são padronizados, há também um padrão para tamanhos de memória, que define o significado de quilo, mega e giga como 1024, 1048576 e 1073741824, respectivamente.
Ruslan

Respostas:

53

62.563 bytes são 61,0966797 kibibytes . O prefixo kibi significa que a base de cálculo é 1024, bi significa "binário" porque 2 ^ 10 = 1024 . É apenas um dos prefixos binários , outros sendo mebi ou gibi .

Um kilobyte, por outro lado, tem 1000 bytes, usando os prefixos clássicos do SI que você conhece em quilômetros e quilogramas. É usando a base decimal, 10 ^ 3 = 1000 , para que o Google esteja certo . Se você pesquisasse a mesma quantidade em kibibytes no Google, obteria a resposta certa na terminologia da computação.

É realmente importante fazer a distinção entre quilo e kibi hoje em dia e, na verdade, o Windows deve relatá-lo como "61 KiB" para ser absolutamente preciso. Esta é a convenção da IEC para facilitar a distinção.

Dito isto, ainda há muita ambiguidade hoje em dia, onde os tamanhos dos discos rígidos são normalmente relatados em unidades binárias (mas nem sempre explicitamente), e as velocidades de conexão são fornecidas nas unidades SI.

slhck
fonte
1
@Joker_vD: Felizmente ;-) kilo e mega (e quaisquer outros prefixos que se seguiriam) são apenas fatores, não quantidades próprias; portanto, usar apenas K e M (e G e T e P etc.) seria inútil. (O mesmo é válido para os prefixos kibi , mebi etc., obviamente.) Além disso, todas as unidades comumente usadas são bem livres de ambiguidade, pois nenhuma abreviação é usada duas vezes, mas K à primeira vista parece com K para Kelvin .
OR Mapper
1
@ORMapper Sim, e T seria confundido com Tesla . Porque, obviamente, os manuais do programador costumam discutir a física subjacente.
Joker_vD
1
@Joker_vD: Se a física pode ou não aparecer, é irrelevante. O ponto é que os sinais de unidade K e T não seriam mais inequívocos sem nenhum contexto - criando assim uma desvantagem inegável em comparação com um mapeamento exclusivo entre sinais e unidades -, tornando essa convenção altamente indesejável.
OR Mapper
1
Quem fora de um nicho do mundo dos computadores sabe o que é um 'kibibyte'? A propósito, só recentemente o Google estava "certo". É ainda um debate muito vivo sobre se um kilobyte é 1000 ou 1024 bytes.
23814 Justin Krejcha
9
Eu sou o único que está um pouco chateado por isso ser truncado para 61,0, em vez de arredondado para 61,1?
Christofer Ohlsson 23/07
22

Sim, pense no google como o Chapeleiro Maluco. Você tem que fazer a pergunta certa. Ou talvez um elfo: às vezes sua resposta será sim e não.

byte para KiB.  O kilobyte do computador;  ou o kibibyte.

Iraedei
fonte
5

1 KB = 1024 bytes. Portanto:

62563 / 1024 = 61.097KB

Como atalho, muitas pessoas e sistemas tratam um KB como 1000, já que Kilo é o prefixo do SI para 1000. Os cientistas da computação, no entanto, usam o prefixo de 2 ^ 10, que é 1024.

EBGreen
fonte
3

A maioria dos números relacionados a computadores usa prefixos binários, ao contrário do sistema SI, que usa prefixos decimais. Significa que:

  • 1 quilograma = 10 3 gramas, mas
  • 1 kilobyte = 2 10 bytes

Isso é, respectivamente, 1000 gramas e 1024 bytes. 62563 / 1024 ~= 61, então o Windows está certo.

Porém, nem tudo relacionado ao computador é baseado em prefixos binários, e essa inconsistência geralmente leva a mal-entendidos. Esta página da Wikipedia descreve quais prefixos são usados ​​para medir coisas diferentes.

Um caso extremo é a largura de banda. Geralmente, usa prefixos binários quando expressos em bytes por segundo e prefixos decimais quando expressos em bits por segundo. Portanto, esta frase é verdadeira:

1 byte por segundo = 8 bits por segundo

Mas este é falso:

1 kilobyte por segundo = 8 kilobits por segundo

Porque:

  • 1 KB / s = 1024 B / s
  • 1 Kbps = 1000 bps

( questão relacionada )

gronostaj
fonte
1
Erro: 2 ^ 8 = 256 ---> Suponho que deve ser de 2 ^ 10 ;-)
Hannu
A página de discussão do WP é muito mais interessante do que o artigo real (um debate muito grande sobre se um KB é 1024 ou 1000 bytes).
23714 Justin Krejcha
A largura de banda é expressa corretamente em Hz, onde os prefixos do SI usam potências de 10. A razão pela qual a taxa de transferência (taxa de transferência de dados, largura de banda equivalente multiplicada pela eficiência da codificação) é ambígua é porque a primeira definição leva a (KB)/s, onde a KB usa o prefixo binário e a segunda é baseada em kHz ou kbaud, usando o decimal prefixo.
Ben Voigt