Qual é a diferença entre um kibibyte, um kilobit e um kilobyte?

42

Esta pergunta me fez pensar sobre as diferenças entre essas três formas de medir o tamanho: um kibibyte , um kilobit e o convencional quilobyte .

Eu entendo que essas medidas têm usos diferentes (a taxa de transferência de dados é medida em bits / s), mas não tenho certeza se posso dizer a diferença entre Mb e MB e MiB.

Aqui está um comentário, reproduzido abaixo, retirado de esta resposta ( ênfase minha ).

The C64 has 65536 bytes of RAM. By convention, memory size is specified in kibiBytes, data transfer rates in kilobits, and mass storage in whatever-the-manufacturers-think-of-now-Bytes. Harddrives use T, G, M and k on the label, Windows reports the size in Ti, Gi, Mi and ki. And those 1.44MB floppys? Those are neither 1.44MB nor 1.44MiB, they are 1.44 kilokibibytes. That's 1440kiB or 1'474'560 bytes. – Third

    
por Redandwhite 23.05.2011 / 17:16

3 respostas

58
1 KiB (Kibibyte) = 1,024 B (Bytes) (2^10 Bytes)
1 kb  (Kilobit)  =   125 B (Bytes) (10^3 Bits ÷ (8 bits / byte) = 125 B)
1 kB  (Kilobyte) = 1,000 B (Bytes) (10^3 Bytes)

É da mesma maneira com qualquer prefixo SI; k (1x10 3 ), M (1x10 6 ), G (1x10 9 ), portanto, por extensão:

1 MiB (Mebibyte) = 1,048,576 B (Bytes) (2^20 Bytes)
1 Mb  (Megabit)  =   125,000 B (Bytes) (10^6 Bits ÷ (8 bits / byte) = 125,000 B)
1 MB  (Megabyte) = 1,000,000 B (Bytes) (10^6 Bytes)

Os únicos que são um pouco diferentes são os Prefixos Binários IEC (kibi / mebi / gibi etc.), porque eles estão na base 2, não na base 10 (por exemplo, todos os números são iguais a alguma coisa em vez de 10 algo ). Eu prefiro apenas usar os prefixos do SI porque acho que é muito mais fácil. Além disso, o Canadá (meu país) usa o sistema métrico, por isso estou acostumado, por exemplo, a 1kg = 1000g (ou 1k anything = 1000 base things ). Nenhum destes está errado ou certo; apenas certifique-se de saber qual deles você está usando e o que realmente significa.

Para apaziguar os comentadores:

1 Byte (B) = 2 nibbles = 8 bits (b)

É por isso que, se você já deu uma olhada em um editor hexadecimal, tudo é dividido em dois caracteres hexadecimais; Cada caractere hexadecimal é o tamanho de um nibble e há dois em um byte. Por exemplo:

198 (decimal) = C6 (hex) = 11000110 (bits)
    
por 23.05.2011 / 17:44
8

Existem alguns termos básicos que são simples e fáceis de entender:

* A bit      (b)   is the smallest unit of data comprised of just {0,1}
* 1 nibble   (-)   = 4 bits (cutesy term with limited usage; mostly bitfields)
* 1 byte     (B)   = 8 bits (you could also say 2 nibbles, but that’s rare)

Para converter entre bits e bytes (com qualquer prefixo), apenas múltiplo ou dividido por oito; bom e simples.

Agora, as coisas ficam um pouco mais complicadas porque existem dois sistemas de medição de grandes grupos de dados: decimal e binário . Durante anos, os programadores e engenheiros de computação usaram os mesmos termos para ambos, mas a confusão acabou provocando algumas tentativas de padronizar um conjunto adequado de prefixos.

Cada sistema usa um conjunto semelhante de prefixos que podem ser aplicados a bits ou bytes. Cada prefixos começam o mesmo em ambos os sistemas, mas os binários soam como baby-talk depois disso.

O sistema decimal é a base-10 que a maioria das pessoas está acostumada e confortável usando porque temos 10 dedos. O sistema binário é o base-2, ao qual a maioria dos computadores está acostumada e confortável, porque possui dois estados de voltagem.

O sistema decimal é óbvio e fácil de usar para a maioria das pessoas (é simples o suficiente para multiplicar em nossas cabeças). Cada prefixo aumenta em 1.000 (a razão para isso é um assunto totalmente diferente).

O sistema binário é muito mais difícil de ser usado pela maioria das pessoas que não são computadores, e mesmo os programadores muitas vezes não podem ter múltiplos números arbitrariamente grandes em mente. No entanto, é uma questão simples de ser múltiplos de dois. Cada prefixo aumenta em 1.024. Um “K” é de 1.024 porque essa é a potência mais próxima de dois para o decimal “k” de 1.000 (isso pode ser verdade neste ponto, mas a diferença aumenta rapidamente com cada prefixo sucessivo).

Os números são os mesmos para bits e bytes que possuem o mesmo prefixo.

* Decimal:
* 1 kilobyte (kB)  = 1,000 B  = 1,000^1 B           1,000 B
* 1 megabyte (MB)  = 1,000 KB = 1,000^2 B =     1,000,000 B
* 1 gigabyte (GB)  = 1,000 MB = 1,000^3 B = 1,000,000,000 B

* 1 kilobit  (kb)  = 1,000 b  = 1,000^1 b           1,000 b
* 1 megabit  (Mb)  = 1,000 Kb = 1,000^2 b =     1,000,000 b
* 1 gigabit  (Gb)  = 1,000 Mb = 1,000^3 b = 1,000,000,000 b

* …and so on, just like with normal Metric units meters, liters, etc.
* each successive prefix is the previous one multiplied by 1,000



* Binary:
* 1 kibibyte (KiB) = 1,024 B  = 1,024^1 B           1,024 B
* 1 mebibyte (MiB) = 1,024 KB = 1,024^2 B =     1,048,576 B
* 1 gibibyte (GiB) = 1,024 MB = 1,024^3 B = 1,073,741,824 B

* 1 kibibit  (Kib) = 1,024 b  = 1,024^1 b =         1,024 b
* 1 mebibit  (Mib) = 1,024 Kb = 1,024^2 b =     1,048,576 b
* 1 gibibit  (Gib) = 1,024 Mb = 1,024^3 b = 1,073,741,824 b

* …and so on, using similar prefixes as Metric, but with funny, ebi’s and ibi’s
* each successive prefix is the previous one multiplied by 1,024

Observe que a diferença entre o sistema decimal e o binário começa pequeno (em 1K, eles são apenas 24 bytes ou 2,4% separados), mas cresce com cada nível (em 1G eles são > 70 MiB ou 6,9% apart).

Como regra geral, os dispositivos de hardware usam unidades decimais (bits ou bytes) enquanto o software usa binário (geralmente bytes).

Esta é a razão pela qual alguns fabricantes, particularmente os mfgs, gostam de usar unidades decimais, porque o tamanho da unidade soa maior, mas os usuários ficam frustrados quando descobrem que tem menos do que esperavam quando viram o Windows et. al. relate o tamanho em binário. Por exemplo, 500GB = 476GiB, então, enquanto o drive contém 500GB e é classificado como tal, My Computer exibe o binário 476GiB (mas como “476GB”), então os usuários imaginam onde os outros 23GB foram . (Os fabricantes de discos geralmente acrescentam uma nota de rodapé aos pacotes dizendo que o "tamanho formatado é menor", o que é enganoso, porque a sobrecarga do sistema de arquivos não é nada comparada à diferença entre unidades decimais e binárias.)

Dispositivos de rede geralmente usam bits em vez de bytes por razões históricas, e os ISPs geralmente gostam de anunciar o uso de bits porque faz com que a velocidade das conexões que eles oferecem soe maior: 12Mibps em vez de apenas 1.5MiBps. Eles geralmente misturam e combinam bits e bytes e decimais e binários. Por exemplo, você pode assinar o que o ISP chama de linha “12MBps”, pensando que você está recebendo 12MiBps, mas na verdade apenas recebe 1,43MiBps (12.000.000 / 8/1024/1024).

    
por 06.06.2012 / 06:50
-4

Algumas das respostas não são exatas.

Vamos primeiro fazer algumas anotações:

O prefixo "kilo" significa 1 000. Prefixar "kilo" para qualquer coisa significa 1 000 desse item. O mesmo vale para "mega" ou milhões, "giga" ou bilhão, "tera" ou trilhão, e assim por diante.

A razão 1 024 existe em vez de simplesmente ter 1 000 é devido ao modo como funciona a aritmética binária. Binário, como o próprio nome sugere, é um sistema de base 2 (tem 2 dígitos: 0, 1). Ele só pode realizar aritmética com dois dígitos, em contraste com o sistema de base 10 que usamos diariamente (0, 1, 2 ... 9), que tem dez dígitos.

Para chegar ao número 1 000 ( kilo ) usando aritmética binária, é necessário realizar um cálculo de ponto flutuante. Isso significa que um dígito binário deve ser transportado a cada operação até que 1 000 seja atingido. No sistema base 10, 1 000 = 10 3 (você sempre aumenta 10 para uma potência na base 10), um cálculo muito fácil e rápido para um computador executar sem "remanescentes", mas em o sistema base 2, não é possível aumentar 2 (você sempre aumenta 2 para uma potência na base 2) para qualquer inteiro positivo para obter 1.000. Uma operação de ponto flutuante ou uma adição longa deve ser usada, e isso leva mais tempo para execute do que o cálculo inteiro 2 10 = 1024.

Você deve ter notado que 2 10 = 1 024 é tentadoramente próximo de 1 000 e 1 024 a 1 valor significativo é 1 000 (uma aproximação muito boa), e de volta quando a velocidade da CPU estava lenta como um cão velho, e a memória era muito limitada, era uma aproximação bastante decente e muito fácil de trabalhar, para não mencionar a rapidez de execução.

É por essa razão que os termos com os prefixos "kilo", "mega", "giga", etc., ficaram com figuras não exatas (1 024, 2 048, 4 096 e assim por diante). Eles nunca foram feitos para ser números exatos, eles eram aproximações binárias de números de base 10. Eles simplesmente surgiram como palavras de jargão que as pessoas "técnicas" usavam.

Para tornar as coisas ainda mais complicadas, o JEDEC criou seus próprios padrões para unidades usadas em circuitos de memória de semicondutores. Vamos comparar algumas das unidades do JEDEC com as unidades SI (padrão internacional):

Kb = Kilobit (JEDEC, 1 024 bits. Observe as letras maiúsculas 'K' e minúsculas 'b')
kB = kiloBit (SI, 1 000 bits. Note o minúsculo 'k' e maiúsculo 'B')

b = bit (JEDEC, note o minúsculo 'b')
b = ??? (SI não define a palavra 'bit', então seu uso pode ser arbitrário)

B = byte (JEDEC, 8 bits. Observe a maiúscula 'B')
B = ???? (SI não define a palavra "byte" e "B" é usado para "Bel" [como em DeciBel])

KB = kilobyte (JEDEC, 1 024 bytes. Observe as letras maiúsculas 'K' e 'B')
kb = kilobyte (SI, 1 000 bytes. Observe o uso do minúsculo 'k' e minúsculo 'B')

A questão é que lugares diferentes usam prefixos diferentes com definições diferentes. Não existe uma regra rígida quanto à qual você deve usar, mas seja consistente com a que você usa.

Devido à baixa votação, permita-me esclarecer por que você não pode fazer 1 000 em binário, aumentando-o para qualquer número inteiro positivo.

Sistema binário:

+----------------------------------------------------------------------------------+
| 1 024ths | 512ths | 256ths | 128ths | 64ths | 32nds | 16ths | 8ths | 4s | 2s | 0 |
+-----------------------------------------------------------------------------------

Observe que no sistema binário, as colunas duplicam todas as vezes. Isto está em contraste com o sistema base 10, que aumenta em 10 cada vez:

+--------------------------------------------------------------------------+
| 1 000 000ths | 100 000ths | 10 000ths | 1 000ths | 100ths | 10s | 1s | 0 |
+--------------------------------------------------------------------------+

Os primeiros 10 poderes em binário (base 2) são:

2 0 = 1
2 1 = 2
2 2 = 4
2 3 = 8
2 4 = 16
2 5 = 32
2 6 = 64
2 7 = 128
2 8 = 256
2 9 = 512
2 10 = 1 024

Como você pode ver, não é possível aumentar o binário 2 para qualquer número inteiro positivo para atingir 1.000.

    
por 04.05.2014 / 04:02