Quelle est l'origine de K = 1024? [fermé]

73

Pourquoi existe-t-il une différence entre le nombre d'octets dans un kilo-octet? Dans certains endroits, j'ai vu le nombre 1024 (2 10 ), alors que dans d'autres, il était 1000 (et la différence devient de plus en plus grande avec M, G, T, etc.).

Ce n’est pas une discussion sur le fait de savoir si elle devrait être 1024 ou 1000 (bien que vous puissiez en parler dans les commentaires) mais sur où / quand cette situation est née et / ou s’est généralisée.

Autant que je sache, les fabricants de Linux et de matériel n'utilisent jamais la variante 1024. Cela me fait penser que MS-DOS a rendu cette version commune, mais quels sont les faits?

Bart van Heukelom
la source
23
Une représentation est en binaire (2 ^ 10, ou 1024) tandis que l'autre est en décimal (10 ^ 3 ou 1000) ...
Trezoid
13
Si vous recherchez des personnes spécifiques à blâmer, dirigez-vous vers les fabricants de disques durs. Cela donne l'impression que leurs périphériques ont davantage de capacité lorsqu'ils sont exprimés en MB, en Go, etc. en décimales. Ils l'ont toujours fait, mais ce n'est que depuis peu que l'écart entre décimal et binaire s'est suffisamment élargi. d'importance significative.
LawrenceC
23
@ultrasawblade: Vous voulez reprocher aux fabricants de disques durs d'être l'un des seuls groupes à utiliser gigabytecorrectement ce terme ?
Parroïde
13
Cela me semblait toujours être une chose comprise que 1K = 1024 avec tout ce qui concerne l'ordinateur avant que 20 Go ou plus lecteurs sont devenus monnaie courante. Cela coïncide également avec le moment où de nombreuses personnes non techniques ont commencé à utiliser régulièrement des ordinateurs. De nombreuses publications informatiques (techniques et non techniques) du début des années 90 et des années précédentes ne mentionnent rien sur les KB "décimales" ou les "kibibytes".
LawrenceC
13
@paradroid: gigaoctet signifiait à l'origine 1024 Mo (et Mo = 1024 Ko, etc.). Il a été rallumé pour signifier 1000 parce que les fabricants de disques durs ont insisté pour l’utiliser mal. Certes, cela dépend de ce que vous considérez comme "correct" puisque kilo veut dire 1 000, mais en informatique, le kilo-octet était toujours à 1024 pour des raisons techniques jusqu'à ce qu'il soit changé en 1999.
James,

Réponses:

63

Cela remonte assez longtemps et est détaillé ici . Il semblerait que vous puissiez reprocher à IBM, si vous le voulez bien.

Ayant réfléchi un peu plus, je voudrais reprocher à l’ensemble des Américains de ne tenir aucun compte du Système international d’unités : P

paradroque
la source
31
Il est toujours facile de blâmer les Américains.
Notinlist
13
@Notinlist: C'est une blague.
Parroïde
5
Cela me rappelle une scène épique du film Pulp Fiction ... Celui avec la question sur le "système métrique". :-)
Pierre Watelet
7
@Notinlist Il est facile de toujours blâmer les Américains. C'est pourquoi nous le faisons tellement. Ça et le fait que c'est amusant.
Singletoned
3
L’entrée de 1961 y est intéressante, dans la mesure où elle mentionne "65k" - premier ordre de grandeur pouvant indiquer une nette différence entre "k = 1024" et "k = 1000, arrondi", elle se réduit clairement pour ce dernier. En 1964, par contre, tout le monde utilise les significations binaires.
Random832
26

Tout l'informatique était bas niveau au début. Et à la programmation de bas niveau, le nombre "1000" est totalement inutile et ils avaient besoin de préfixes pour des quantités plus importantes afin de pouvoir réutiliser ceux du SI. Tout le monde le savait sur le terrain, il n'y avait pas de confusion. Il a bien servi pendant 30 ans ou qui sait.

Ce n'est pas parce qu'ils étaient américains, ils devaient donc rompre l'IS à tout prix. :-)

Il n'y a pas de programmeur que je connaisse et qui dit kibibyte. Ils disent kilo-octets et ils signifient 1024 octets. Les algorithmes sont pleins des puissances de 2. Même aujourd'hui, "1000" est un nombre vraiment inutile entre programmeurs.

Dire kibi et mibi est trop drôle et attire l’attention du sujet. Nous le cédons volontiers aux secteurs des télécommunications et du stockage sur disque :-). Et je vais écrire des kilo-octets sur des interfaces utilisateur où les non-programmeurs peuvent le lire.

Pas dans la liste
la source
3
C'est encore plus drôle de dire quand on parle de bits - "mibibit"
James
3
Je pense que KiB, etc. est censé se prononcer kilobinarybyte, etc. et pas kibibyte.
Lie Ryan
2
@Lie Ryan, l'utilisation de préfixes tels que "kilobinarybyte" est une proposition qui a finalement échoué et dont l'abréviation est différente de celle de kibibyte. Voir en.wikipedia.org/wiki/Prefix_binaire
Ben Lee
3
alors serait-il juste de prononcer km en kilodécimalmètres?
JustJeff
3
Le nombre 1000 n'est pas "totalement inutile". "k = 1000" est utilisé en informatique depuis les années 1950. Les premiers ordinateurs étaient en réalité des machines décimales et non binaires. La vitesse de mise en réseau a toujours été mesurée en multiples de 1 000. "Cela a bien servi pendant 30 ans"? Vraiment? Les programmeurs se plaignent de "k = 1024" depuis au moins 43 ans. en.wikipedia.org/wiki/Timeline_of_prefixes_binaires
endolithe
8

Il est correct et logique pour les techniciens d’utiliser 1024 = 1K dans de nombreux cas.

Pour les utilisateurs finaux, il vaut généralement mieux dire 1000 = 1k, car tout le monde est habitué au système de numérotation basé sur 10.

Le problème est de savoir où tracer la ligne. Parfois, les gens du marketing ou de la publicité ne réussissent pas vraiment à "traduire" ou à adapter les données techniques et le langage aux utilisateurs finaux.

mit
la source
13
Les techniciens doivent savoir que 1024 octets est en réalité un kibibyte (KiB), mais que le terme n’est pas connu des non-techniciens.
Parroïde
8
Qui a dit que c'était correct? Kilo signifie 1000 depuis des siècles, alors l'OMI n'aurait jamais dû l'utiliser depuis 1024.
Bart van Heukelom
20
L'octet n'est pas une unité SI; KB signifie "kilobel" (accord, une unité que vous ne voudriez jamais utiliser à moins de décrire le son produit par le Big Bang, le cas échéant).
Wooble
10
@ njd: le C64 dispose de 65 536 octets de RAM. Par convention, la taille de la mémoire est spécifiée en kibiBytes, les taux de transfert de données en kilobits et le stockage de masse en octets, quels que soient les fabricants. 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
5
Les variantes kiB, etc. sont relativement nouvelles, cependant. Je ne pense pas qu'ils étaient utilisés lorsque ce problème s'est posé, certainement - j'avais l'impression qu'ils avaient été conçus pour le résoudre!
Shinrai
3

Blame les fabricants de semi-conducteurs (ils ne nous fournissent que du matériel binaire) [1]

Mieux encore: blâmer la logique elle-même (la logique binaire n'est que la logique la plus élémentaire).

Mieux encore: qui devons-nous blâmer pour le système décimal misérable ?

Il a beaucoup plus de défauts que le système binaire. Il était basé toux sur le nombre moyen de doigts dans l'espèce humaine toux

Oooo ...

[1] Je veux mon ordinateur quantique à trois qubits !!! Maintenant!

voir
la source
29
Je pense que vous constaterez que le nombre moyen de doigts est inférieur à 10 </ pedant>
Rory Alsop
1
@Rory: ^ c'était marrant
Mehrdad,
2
@Rory: "moins" </ pedant>. Ou est-ce? Attendez une minute, je pense ...
outsideblasts
1

1024 n’est pas à blâmer, c’est une très bonne chose, car c’est la raison pour laquelle l’informatique (numérique) peut être aussi rapide et efficace qu’aujourd’hui. Étant donné que l'ordinateur n'utilise que 2 valeurs (0,1), il élimine les difficultés et la complexité (imprécisions) du système anolog de l'équation.

Ce serait plus compliqué si nous disions qu'un kilo-octet vaut 1000 bits parce que 2 à quelle puissance est 1000? ainsi, même 1 kilo-octet serait inexact, car il aura des points flottants ou une approximation.

Mais je blâme en grande partie le marketing pour la vente de 8 gigaoctets * et l’ajouté en petits caractères.

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

c'est vraiment dommage, c'est la même chose avec la vitesse de connexion, votre FAI dira 1,5 Mbps au lieu de vous dire environ 150 kilo-octets. c'est juste très trompeur

Ibu
la source
3
En indiquant la taille d'un fichier de 15682 bits ou la rapidité avec laquelle un tel fichier peut être transféré sur un réseau, la puissance de 2 ne joue aucun rôle. Et c'est dans ce contexte qu'il y a le plus de confusion.
Bart van Heukelom,
2
En fin de compte, le fichier est stocké dans des pages de mémoire, alignées sur des limites d’alimentation binaires. Lors de l'envoi sur TCP, la taille de la fenêtre dans laquelle les paquets sont envoyés est un multiple de deux. Lorsque le fichier est stocké sur le disque dur, il est stocké par blocs de deux. Je comprends ce que vous dites, mais kilo-octet = 1024 (ou au moins des multiples de puissances de deux) est trop enraciné dans l’informatique.
FryGuy
1
pour être juste, la mise en réseau a toujours utilisé des bits comme base.
Synetech
1
La première 5.25 "disquette contenait 109 375 octets et était annoncée comme" 109,4 Ko ". Je suppose qu'ils l'ont fait pour des raisons marketing diaboliques, vous aussi. Vous pensez qu'il serait plus logique de l'écrire au format" 106,8 Ko "? Et lecteurs de bande et processeur les vitesses et les vitesses de modem sont toutes mesurées en décimales pour nous tromper? S'il vous plaît.
Endolith
1
@ Ibu: la différence entre 1 000 000 000 d'octets et 1 Go est égale à 0. En effet, pourquoi les fabricants de disquettes gonfleraient-ils par malveillance leur nombre alors que la différence est si faible? Ils ne seraient pas. Ils ont utilisé des milliers parce que c'est logique, évident et correct, et non parce qu'ils font partie d'un complot visant à escroquer des clients. Les fabricants de disques durs mesurent en milliers de dollars depuis le MB, pour la même raison.
endolith
0

Lorsque vous considérez que les nombres sur les ordinateurs sont binaires et que 2 ^ 10 est égal à 1024, cela semble parfaitement logique. Il est beaucoup plus facile de travailler avec 1024 plutôt que 1000, car vous pouvez facilement diviser par 1024 en utilisant uniquement le calcul des nombres entiers et le transfert de bits . La division par 1000 est une opération beaucoup plus coûteuse, qui peut nécessiter des calculs en virgule flottante.

Par exemple

bytes = 1 073 741 824
kilobytes = bytes >> 10 = 1 048 576
megabytes = kilobytes >> 10 = 1024
gigabytes = megabytes >> 10 = 1
Jo-Herman Haugholt
la source
Vous pensez sérieusement que le temps de calcul est pertinent? Pourquoi les ordinateurs ne traitent-ils pas "km" comme "1024 m", alors, si c'est si difficile à convertir?
endolithe
@endolith Oui, je le pense, du moins historiquement. Même s’il est peut-être négligeable aujourd’hui, à l’époque où chaque cycle de traitement de l’ordinateur était très coûteux, un calcul simple et rapide donnant une réponse décente serait préférable dans ce genre de situation. Surtout si les gens savaient, par convention, que 1 Ko voulait dire 1024 octets.
Jo-Herman Haugholt le