Comment ça marche
Les unités de stockage se comptent de deux manières différentes, et les deux sont correctes. Le système décimal, celui qu'utilisent les fabricants de disques et le Système international, multiplie par 1000 à chaque préfixe : un kB vaut 1000 octets, un MB un million et un TB mille milliards. Le système binaire, né avec les ordinateurs, multiplie par 1024, parce que la mémoire et les bus sont adressés en puissances de deux.
Le problème, c'est que pendant des décennies les deux systèmes ont porté les mêmes noms. Quand l'Explorateur Windows affiche « GB », il calcule en réalité des gibioctets, c'est-à-dire qu'il divise trois fois par 1024. C'est pour cela qu'un disque de 1 To, qui contient exactement mille milliards d'octets, apparaît à l'écran comme 931,32 Go : rien ne manque, seule la règle de comptage a changé. Depuis 1998, la norme CEI 80000-13 lève l'ambiguïté avec les préfixes binaires KiB, MiB, GiB et TiB.
Cet outil convertit une capacité dans les trois familles à la fois —décimale, binaire et bits— et affiche le nombre exact d'octets, le chiffre annoncé par le fabricant et celui que montrera le système d'exploitation, avec le pourcentage d'écart entre les deux. Tout le calcul se fait dans le navigateur.
Exemples
1 TB931,32 GBLe disque contient 1 000 000 000 000 d'octets, exactement ce que promet la boîte. Le système les divise trois fois par 1024 et affiche 931,32 Go, qui sont en toute rigueur 931,32 Gio. À l'écran, près de 69 Go semblent manquer ; sur le disque, pas un seul octet ne manque.1 GiB1073741824 BUn gibioctet vaut 2^30 octets. Un gigaoctet décimal vaut 1 000 000 000, le binaire est donc 7,37 % plus grand. C'est le même écart qui sépare ce que vous voulez dire en demandant « un giga » de ce que comprend chaque programme.4 TB3,64 TiBPlus le préfixe est grand, plus les deux systèmes s'éloignent : 2,34 % pour les kilo, 6,87 % pour les giga et 9,05 % pour les téra. C'est pourquoi l'impression de « disque trop petit » empire justement avec les gros disques.100 Mbit12,5 MBLes liaisons réseau se mesurent en bits et le stockage en octets. Une liaison de 100 Mbit/s télécharge au maximum 12,5 Mo par seconde, car chaque octet vaut 8 bits. Ce calcul explique la moitié des réclamations adressées aux fournisseurs d'accès.Cas d'usage
- Comprendre pourquoi un disque de 1 To ou une clé USB de 64 Go affichent moins de capacité que ne l'annonce l'emballage.
- Traduire en quelque chose de lisible la taille en octets renvoyée par une API, un journal ou la commande ls -l.
- Comparer la taille d'une sauvegarde ou d'une image entre deux outils qui mesurent avec des règles différentes.
- Dimensionner des quotas, des volumes ou des limites d'envoi quand la documentation parle en Mio et l'interface en Mo.
- Convertir le débit d'une liaison en Mbit/s en vitesse de téléchargement réelle en Mo/s.
- Expliquer à un client, chiffres à l'appui, que le disque acheté ne contient pas moins d'espace que promis.
Questions fréquentes
J'ai acheté un disque de 1 To et je vois 931 Go, me suis-je fait avoir ?
Non. Le disque contient 1 000 000 000 000 d'octets, ce que signifie 1 To dans le système décimal qu'emploient tous les fabricants. Windows prend ces mêmes octets, les divise trois fois par 1024, obtient 931,32 et étiquette le résultat « GB » au lieu de « GiB ». C'est un problème d'étiquette, pas de capacité : tous les octets sont là. Ce qui se perd réellement, et c'est autre chose, c'est ce que réserve le système de fichiers au formatage.
Quelle est la différence entre Go et Gio ?
Un Go vaut 1 000 000 000 d'octets (10^9) et un Gio 1 073 741 824 (2^30). Le gibioctet est 7,37 % plus grand. Le même rapport se répète à chaque niveau : kB face à KiB, MB face à MiB, TB face à TiB. Les symboles binaires portent un « i » au milieu et se prononcent kibi, mébi, gibi et tébi.
Tous les systèmes d'exploitation affichent-ils la même chose ?
Non, et cela ajoute à la confusion. Windows calcule en puissances de 1024 mais étiquette GB et TB : il affiche donc 931 Go pour un disque de 1 To. macOS mesure en décimal depuis 2009, si bien que le même disque apparaît comme 1 To. Sous Linux, cela dépend de l'outil : df -h et ls -lh utilisent 1024, df -H et ls -l --si utilisent 1000, et de nombreux utilitaires écrivent déjà Gio quand il le faut. Le disque n'a jamais changé ; c'est celui qui le mesure qui change.
Pourquoi la mémoire vive correspond-elle à ce qu'annonce la boîte ?
Parce que la mémoire est fabriquée et adressée en puissances de deux : un module de « 16 Go » contient en réalité 16 Gio, soit 17 179 869 184 octets. Comme le système d'exploitation compte lui aussi en binaire, les deux nombres coïncident et personne ne remarque rien. Avec les disques, c'est l'inverse : le fabricant compte en décimal et le système en binaire, et l'écart saute aux yeux.
De combien l'écart grandit-il selon le préfixe ?
Il s'accumule de 2,4 % par niveau. Le nombre affiché par le système est 2,34 % plus petit pour les kilo, 4,63 % pour les méga, 6,87 % pour les giga, 9,05 % pour les téra, 11,18 % pour les péta et 13,26 % pour les exa. Voilà pourquoi, sur un fichier de quelques kilo-octets, la différence est imperceptible, tandis que sur une baie de plusieurs pétaoctets elle représente des centaines de téraoctets d'attente déçue.
Un Mbit est-il la même chose qu'un Mo ?
Non, et l'écart est d'un facteur huit. Les liaisons réseau se mesurent en bits par seconde et le stockage en octets, et un octet vaut 8 bits. Une liaison de 300 Mbit/s délivre au maximum 37,5 Mo/s en téléchargement, avant même de retrancher les en-têtes des protocoles. De plus, les préfixes réseau sont toujours décimaux : un Mbit vaut un million de bits, jamais 1 048 576.
Pourquoi mon SSD affiche-t-il encore moins d'espace ?
Deux éléments s'ajoutent à l'écart entre décimal et binaire. Le premier est le surprovisionnement : le contrôleur réserve une part de la mémoire flash, inutilisable, pour remplacer les blocs usés et accélérer l'écriture. Le second est le système de fichiers, qui consomme de l'espace en tables, journal et métadonnées dès le formatage. Aucun des deux n'est un défaut : c'est le prix à payer pour que l'unité dure et fonctionne.
Alors, quelle unité employer dans une documentation ?
Celle qui ne laisse aucun doute. Si la valeur est calculée en puissances de 1024, écrivez Mio ou Gio ; si elle est calculée en puissances de 1000, écrivez Mo ou Go. Dans une API ou un fichier de configuration, le plus sûr est d'exposer directement le nombre d'octets et de laisser l'interface choisir comment l'afficher. C'est une ligne de code qui évite des heures de discussion sur les chiffres divergents de deux outils pour un même fichier.