Quelle est la différence entre un kibibyte, un kilobit et un kilo-octet?

45

Cette question m'a amené à m'interroger sur les différences entre ces trois façons de mesurer la taille: un kibibyte , un kilobit et le kilobyte conventionnel.

Je comprends que ces mesures ont des utilisations différentes (le taux de transfert des données est mesuré en bits / s), mais je ne suis pas tout à fait sûr de pouvoir faire la différence entre Mb, MB et MiB.

Voici un commentaire, reproduit ci-dessous, tiré de cette réponse (c'est moi qui souligne ).

Le C64 dispose de 65 536 octets de RAM. Par convention, la taille de la mémoire est spécifiée dans kibibytes , les taux de transfert de données en kilobits et le stockage de masse dans tout-les-fabricants pensent-de-maintenant- Octets . Les disques durs utilisent T, G, M et k sur l’étiquette, Windows indique la taille en Ti , Gi , Mi et ki . Et ces disquettes de 1,44 Mo? Ce ne sont ni 1,44 Mo ni 1,44 Mo, ils sont 1,44 kilokibytes. C'est 1440kiB ou 1'474'560 octets. - troisième

Rouge et blanc
la source
12
Il y aura de la confusion pour les années à venir. Aux débuts de l'informatique, on s'aperçut qu'il était clairement beaucoup plus facile de travailler avec des facteurs de 1024 plutôt que de 1000 pour les ordinateurs. Par conséquent, pendant des décennies, le préfixe SI standard "kilo" a été (et est encore très souvent) utilisé pour le code 1024 non standard, et il est devenu un standard de facto en informatique. Sauf que certaines personnes utilisaient toujours le SI 1000 de toute façon. Pour résoudre le désordre, "kibi" est maintenant officiellement défini comme un facteur 1024 - mais il est trop tard pour permettre une transition facile. "kilo" sera régulièrement utilisé / maltraité pour 1024 facteurs pendant un certain temps encore.
Steve314
Cela aurait facilité l’adoption s’ils n’avaient pas choisi de préfixes qui sonnent carrément stupides; même un acronyme exige que quelqu'un «aspire mentalement» le mot. Je n'utiliserai simplement jamais "kibibyte", etc.
tgm1024

Réponses:

63
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)

C'est la même chose avec n'importe quel préfixe SI; k(1x10 3 ), M(1x10 6 ), G(1x10 9 ), donc, par extension:

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)

Les seuls qui sont différents bits sont les binaires CEI Prefixes (kibi / MEBI / gibi etc.), parce qu'ils sont dans la base 2, et non pas 10 base (par exemple , tous les nombres égaux 2 quelque chose au lieu de 10 quelque chose ). Je préfère simplement utiliser les préfixes SI car je trouve que c'est beaucoup plus facile. De plus, le Canada (mon pays) utilise le système métrique, je suis donc habitué à, par exemple 1kg = 1000g(ou 1k anything = 1000 base things). Aucun d'entre eux n'est faux ou juste; Assurez-vous simplement de savoir lequel vous utilisez et ce à quoi cela correspond.

Pour apaiser les commentateurs:

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

C'est pourquoi, si vous avez déjà jeté un coup d'oeil dans un éditeur hexadécimal, tout est divisé en deux caractères hexadécimaux; chaque caractère hexadécimal est la taille d'un quartet, et il y a deux octets. Par exemple:

198 (decimal) = C6 (hex) = 11000110 (bits)
squircle
la source
5
+1 Il peut être utile d'indiquer qu'il y a 8 bits dans un octet.
Parroïde
4
... et n'oubliez pas qu'un nybble est quatre bits (ou un demi-octet)!
Linker3000
4
Sachez également que la minuscule "b" est parfois utilisée de manière incorrecte pour abréger "octets". Je vois que beaucoup d’endroits utilisent simplement "bit" dans l’abréviation, comme MB pour mégaoctet et Mbit pour mégabit, et s’éloignent complètement de "b".
James
4
Le préfixe kilo est abrégé en k, pas en k.
garyjohn
1
@Redandwhite Nope, ils utilisent la base 10 pour mesurer leur stockage, mais nos ordinateurs utilisent la base 2. Cela explique l'écart entre ce qui est imprimé sur la boîte et ce qui est affiché dans l'ordinateur. Par exemple, 500GB (box) = 465.7GiB (computer)(et c'est comme ça qu'ils vous ont).
Squircle
9

Il existe quelques termes de base simples et faciles à comprendre:

* 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)

Pour convertir entre bits et octets (avec n'importe quel préfixe), il suffit de les multiplier ou de les diviser par huit; gentil et simple.

Maintenant, les choses se compliquent un peu car il existe deux systèmes de mesure de grands groupes de données: décimal et binaire . Pendant des années, les programmeurs et les ingénieurs n’ont utilisé que les mêmes termes, mais la confusion a finalement provoqué des tentatives de normalisation d’ un ensemble de préfixes approprié.

Chaque système utilise un ensemble similaire de préfixes pouvant être appliqués à des bits ou à des octets. Chaque préfixe commence de la même manière dans les deux systèmes, mais les préfixes binaires sonnent comme du jargon après ça.

Le système décimal est la base 10, ce à quoi la plupart des gens sont habitués et que l’usage est confortable, car nous avons 10 doigts. Le système binaire est la base 2, ce à quoi la plupart des ordinateurs sont habitués et utilisent facilement car ils ont deux états de tension.

Le système décimal est évident et facile à utiliser pour la plupart des gens (il est assez simple pour se multiplier dans nos têtes). Chaque préfixe augmente de 1 000 (la raison en est une toute autre affaire).

Le système binaire est beaucoup plus difficile à utiliser pour la plupart des non-informaticiens, et même les programmeurs ne peuvent souvent pas multiplier les nombres arbitrairement grands dans leur tête. Néanmoins, il s’agit simplement d’être un multiple de deux. Chaque préfixe augmente de 1 024. Un «K» est égal à 1 024 parce que c'est la puissance de deux la plus proche du «k» décimal de 1 000 (cela peut être vrai à ce stade, mais la différence augmente rapidement avec chaque préfixe successif).

Les nombres sont les mêmes pour les bits et les octets qui ont le même préfixe.

* 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

Notez que la différence entre le système décimal et le système binaire commence petit (à 1 Ko, ils ne sont que 24 octets, soit 2,4% de distance), mais augmente avec chaque niveau (à 1G, ils sont> 70 Mo, ou à 6,9% de distance).

En règle générale, les périphériques matériels utilisent des unités décimales (bits ou octets), tandis que les logiciels utilisent des unités binaires (généralement des octets).

C'est la raison pour laquelle certains fabricants, en particulier les fabricants de disques, préfèrent utiliser des unités décimales, car la taille du disque semble plus grande, mais les utilisateurs sont frustrés lorsqu'ils constatent qu'il en a moins que prévu lorsqu'ils voient Windows et. Al. signaler la taille en binaire. Par exemple, 500 Go = 476 Go. Ainsi, alors que le lecteur est conçu pour contenir 500 Go et étiqueté en tant que tel, Poste de travail affiche le binaire 476 Go (mais sous la forme «476 Go»), de sorte que les utilisateurs se demandent où sont allés les 23 Go suivants. (Les fabricants de lecteurs ajoutent souvent une note de bas de page aux packages indiquant que la «taille formatée est inférieure», ce qui est trompeur, car la surcharge du système de fichiers n’est en rien comparable à la différence entre les unités décimales et binaires.)

Les périphériques réseau utilisent souvent des bits au lieu d'octets pour des raisons historiques, et les fournisseurs de services Internet préfèrent souvent utiliser des bits, car la vitesse des connexions proposées est plus rapide: 12 Mbps au lieu de 1,5 Mbps. Ils mélangent même souvent des bits et des octets, ainsi que des nombres décimaux et binaires. Par exemple, vous pouvez vous abonner à ce que le FAI appelle une ligne «12 Mbps», en pensant que vous obtenez 12 Mbps mais que vous ne recevez en réalité que 1,43 Mbps (12 000 000/8 / 1024/1024).

Synetech
la source
2
@endolith, pas vrai. Tout d’abord, il existe en effet, ou du moins dans le passé, des fabricants de lecteurs utilisant des unités binaires. Deuxièmement, vous avez manqué le point. S'ils le voulaient, ils pourraient mettre 73 400 320 sur le lecteur, ce qui correspondrait effectivement à 70M (i) B au lieu de 66. Ils en utilisent 70 000 parce qu'il est moins coûteux de l'utiliser et qu'ils l'appellent encore «70MB». C'est simple et beaucoup de fabricants le font. Regardez la nourriture; au lieu de 500G, ils mettront 454G car il est égal à 1LB. Pire, au lieu de 454G, ils mettront 450G et accuseront la 4G manquante d’avoir arrondi. Ce n'est pas un complot, c'est une réduction des coûts.
Synetech
1
Veuillez fournir des exemples de fabricants de disques durs utilisant des unités binaires.
endolith
1
@endolith, ce n'est pas un site d'histoire. Peut-être que lorsque je ferai un peu de ménage de printemps et que je déterrerai de vieux lecteurs, je posterai une photo ou quelque chose du genre. Sinon, vous pouvez vous rendre dans un musée d'histoire de l'informatique ou dans un magasin spécialisé dans l'informatique pour retrouver des vieux disques durs, si c'est ce qui compte le plus pour vous. De nos jours, la plupart des marques utilisent délibérément des étiquettes qui font paraître les choses plus grandes. Comme je l'ai dit, ils pourraient créer 73 400 320 octets si ils le voulaient, mais pourquoi s'embêter quand ils peuvent acheter à bas prix et encore techniquement appeler 70 Mo? Encore une fois, ce n'est pas un complot, c'est un mensonge marketing commun.
Synetech
2
J'ai déjà parcouru les archives de bitsavers et tous les exemples que je trouve sont décimaux. Ce mythe selon lequel les fabricants de disques passaient du binaire au décimal à un moment donné pour tromper les clients est dingue. Ils n'ont pas été écrits par les services marketing, mais par des ingénieurs utilisant les unités standard utilisées par les ingénieurs. Il est logique et rationnel d'appeler un lecteur IBM 3340 «70 Mo» de 70 000 000 octets. C'est ce que «méga» a toujours voulu dire et c'est ce à quoi les utilisateurs s'attendent. L'appeler "66 Mo" à certains endroits et "68 359 Ko" à d'autres endroits, comme le fait Microsoft Windows, est fou.
endolith
1
@endolith, personne n’a dit qu’il était passé à la décimale pour tromper, mais qu’il les vendait volontairement de cette manière, même s’ils étaient au courant de la confusion et qu’ils pouvaient créer un disque de 73 400 320 octets au lieu de 70 000 000, ce qui n’est pas un chiffre rond dans les ordinateurs. En ce qui concerne votre déclaration à propos de «toujours» avoir toujours signifié cela, il existe déjà un fil conducteur sur la mise en service des unités binaires. Il y a bien longtemps, certainement avant que les ordinateurs ne deviennent des produits de consommation.
Synetech
-4

Certaines des réponses ne sont pas exactes.

Prenons d'abord quelques notes:

Le préfixe "kilo" signifie 1 000. Le préfixe "kilo" signifie "1 000". La même chose est vraie pour "méga" ou million, "giga" ou milliard, "tera" ou billion, et ainsi de suite.

La raison pour laquelle 1 024 existe au lieu d'avoir simplement 1 000 est due à la façon dont fonctionne l'arithmétique binaire. Binary, comme son nom l'indique, est un système base 2 (il a 2 chiffres: 0, 1). Il ne peut effectuer une arithmétique qu'avec deux chiffres, contrairement au système base 10 que nous utilisons quotidiennement (0, 1, 2 ... 9), qui comporte dix chiffres.

Pour obtenir le nombre 1 000 ( kilo ) en arithmétique binaire, il est nécessaire d'effectuer un calcul en virgule flottante. Cela signifie qu'un chiffre binaire doit être effectué à chaque opération jusqu'à atteindre 1 000. Dans le système de base 10, 1 000 = 10 3 (vous augmentez toujours 10 à une puissance dans la base 10), un calcul très facile et rapide pour un ordinateur à effectuer sans "reste", mais dans le système de base 2, Il n'est pas possible d'élever 2 (vous élevez toujours 2 à une puissance en base 2) avec un nombre entier positif égal à 1 000. Vous devez utiliser une opération à virgule flottante ou une addition longue, ce qui prend plus de temps que le calcul de l'entier. 2 10 = 1024.

Vous avez peut-être remarqué que 2 10 = 1 024 est tentant, il s'approche de 1 000 et 1 024 pour 1, un chiffre significatif est 1 000 (une très bonne approximation), et à l'époque où la vitesse du processeur était lente comme celle d'un vieux chien et que la mémoire est très limitée. , c’était une approximation assez décente et très facile à travailler, sans parler de l’exécution rapide.

C'est pour cette raison que les termes avec "kilo", "méga", "giga", etc., sont préfixés avec des chiffres non exacts (1 024, 2 048, 4 096, etc.). Ils n'étaient jamais censés être des nombres exacts, ils étaient des approximations binaires des nombres de base 10. Ils sont simplement apparus comme des mots de jargon utilisés par les "techniciens".

Pour compliquer encore les choses, JEDEC a créé ses propres normes pour les unités utilisées dans les circuits de mémoire à semi-conducteurs. Comparons certaines des unités JEDEC aux unités SI (standard international):

Kb = Kilobit (JEDEC, 1 024 bits. Notez les majuscules 'K' et les minuscules 'b')
kB = kiloBits (SI, 1 000 bits. Notez les minuscules 'k' et les majuscules 'B')

b = bit (JEDEC, notez la minuscule 'b')
b = ??? (SI ne définit pas le mot 'bit', son utilisation peut donc être arbitraire)

B = octet (JEDEC, 8 bits. Notez la majuscule «B»)
B = ???? (SI ne définit pas le mot "octet" et "B" est utilisé pour "Bel" [comme dans DeciBel])

KB = kilo-octet (JEDEC, 1 024 octets. Notez les majuscules «K» et «B»)
kb = kilo-octets (SI, 1 000 octets. Notez l'utilisation des minuscules «k» et minuscules «B»)

Le fait est que différents endroits utilisent différents préfixes avec différentes définitions. Il n'y a pas de règle absolue quant à celle que vous devriez utiliser, mais soyez cohérent avec celui que vous utilisez.

En raison du vote à la baisse, permettez-moi de préciser pourquoi vous ne pouvez pas générer 1 000 en binaire en l'élevant à un entier positif.

Système binaire:

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

Notez que dans le système binaire, les colonnes doublent à chaque fois. Cela contraste avec le système de base 10 qui augmente de 10 à chaque fois:

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

Les 10 premiers pouvoirs en binaire (base 2) sont:

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

Comme vous pouvez le constater, il n’est pas possible d’élever le binaire 2 à un entier positif pour atteindre 1 000.

utilisateur3005790
la source
3
Je pense que vous avez tort lorsque vous déclarez que le nombre 1000 nécessite une arithmétique en virgule flottante. Vous pouvez représenter n'importe quel nombre naturel en utilisant n'importe quel système de numérotation. En réalité, l'équivalent binaire de 1000 est 1111101000 .
Doktoro Reichard
Doktoro, rappelez-vous que nous travaillons dans le système binaire, ou base 2, vous êtes donc celui qui est incorrect. Voici les 10 premières puissances de 2 en binaire (base 2): 2 ^ 0 = 1. 2 ^ 1 = 2. 2 ^ 3 = 4. 2 ^ 4 = 8. 2 ^ 5 = 16. 2 ^ 6 = 64 .2 ^ 7 = 128. 2 ^ 8 = 256. 2 ^ 9 = 512. 2 ^ 10 = 1024. Notez que la réponse est exponentielle, elle double chaque fois que vous augmentez l'exposant de 1. Vous voyez donc que ce n'est pas possible d'élever un binaire 2 (un BINARY 2 ... pas un dixième de base) en un nombre entier positif pour faire 1 000. J'apprécie le vote négatif tout de même.
user3005790
Cela n'explique pas la différence entre un bit et un octet. En réalité, il existe une "règle rapide" 1 Ko est un millier de bits 1 Ko est un millier d'octets. Il ya une énorme différence. 8 Ko correspond à 1 KB.
Ramhound
3
Bien que cette déclaration soit correcte, vous n'avez toujours pas besoin d'effectuer d'arithmétique en virgule flottante. Vous comprenez les puissances de 2, vous pouvez donc également comprendre que 1111101000 = 2 ^ 9 + 2 ^ 8 + 2 ^ 7 + 2 ^ 6 + 2 ^ 5 + 2 ^ 3 = 1000.
Doktoro Reichard
1
Je ne crois pas que "ils n'aient jamais été supposés être des nombres exacts, c'étaient des approximations binaires de nombres de base 10", c'est vrai; Je pense que c'est simplement un résultat du matériel qui était (est) limité au stockage de zéros et de zéros, et à l'adressage du matériel à l'aide de registres binaires. Les deux étant la base 2; Je pense que ce n’est pas lié à des calculs de base 10 approximatifs. De plus, je ne vois pas ce que vous dites au sujet des calculs. Ce n'est pas comme si la sortie informatique montrait 1024 où elle avait réellement l'intention de montrer 1000, ou si 1000 en interne, ce serait 1024. De quels calculs parlez-vous?
Arjan