Convertir des Mio en Kio

Mio
1024Kio

1 MiB = 1024 KiB

Saisissez une valeur et la conversion de mébioctet en kibioctet suit pendant que vous tapez. Le facteur vaut exactement 1024 : c’est ce que représente 1 Mio en Kio. Le calcul se fait sur votre propre appareil ; une fois la page chargée, elle n’interroge plus aucun serveur.

  • Où cela s’exécute Dans votre navigateur. Ce que vous saisissez n’entre dans aucune requête.
  • Exact par définition 1 MiB vaut exactement 1024 KiB — fixé, pas arrondi.
  • Répond pendant que vous tapez Sans bouton et sans attente. La réponse calculée est dans la page avant qu’aucun script ne s’exécute.

mébioctet en kibioctet : exemples concrets

  • 700 Mio is 716800 Kio

    — un CD audio, d’où vient le chiffre.

  • 8 Mio is 8192 Kio

    — un bloc de mémoire tel qu’un programme en réserve.

  • 0,5 Mio is 512 Kio

    — un demi-mébioctet.

  • 0,003906 Mio is 4 Kio

    — une page de mémoire sur la plupart des systèmes.

mébioctet en kibioctet en un coup d’œil

Chaque nombre de ce tableau est calculé à partir de la définition qui donne la réponse ci-dessus : le tableau ne peut donc pas s’en écarter.
MioKio
11024
22048
55120
1010240
5051200
100102400
500512000
10001024000

mébioctet et kibioctet

Un mébioctet vaut 1 024 kibioctets, soit 1 048 576 octets. Les outils Linux et les chiffres de mémoire désignent presque toujours cela, même quand ils écrivent « Mo ».

Un kibioctet vaut exactement 1 024 octets. Le nom a été introduit en 1998 pour que « kilooctet » puisse de nouveau valoir 1 000 — l’habitude n’a jamais tout à fait cédé.

Un mébioctet fait exactement 1 024 kibioctets

Dans ce sens, l'opération est une multiplication, et par un nombre entier : un mébioctet fait 1 024 kibioctets, exactement, et 1 024 est la définition, pas une mesure tombée juste.

C'est donc une des rares conversions qui valent le coup de tête, et le résultat se vérifie : divisez en sens inverse et vous devez retomber exactement sur le nombre de départ, sans reste à justifier.

MiB est l'unité binaire

Un MiB vaut 1 024 fois l'unité du dessous ; un MB, 1 000. Sur cette page, c'est l'écart entre 1024 KiB et 976,5625 KiB — 4,9 % — et il grandit à chaque palier : négligeable sur une photo, visible sur un disque dur.

Le mystère de l'espace disque manquant tient tout entier là-dedans, et sur cette page il vaut 4,9 %. Un disque vendu en MB contient exactement ce qui est annoncé ; Windows divise ensuite par 1 024 au lieu de 1 000, garde le nom décimal, et affiche 976,5625 KiB là où la boîte annonçait 1024 KiB. macOS compte ces tailles en unités décimales depuis 10.6, d'où le même disque qui paraît de deux tailles sur deux machines — rien n'a disparu et personne n'arrondit : les mêmes octets portent deux noms.

Les champs qui n’acceptent qu’un kibioctet

Un nombre surprenant de limites Unix sont comptées en kibioctets sans qu’il y ait moyen de le préciser dans la valeur. ulimit -s, ulimit -v et ulimit -m sont tous en kibioctets. Les colonnes stack, data, memlock et as dans /etc/security/limits.conf sont en kibioctets. Le --bwlimit de rsync par défaut prend des kibioctets par seconde quand on lui donne un nombre nu. Les blocs de quota disque sont en kibioctets. Dans chaque cas, le champ contient un entier et l’unité est implicite par la page de manuel plutôt que par quoi que ce soit que vous pouvez taper.

C’est pourquoi cette conversion est une opération d’écriture plutôt que de lecture. Vous savez que vous voulez une pile de 8 Mio ou un plafond de 20 Mo/s ; le champ veut 8192 ou 20480 ; et le seul retour sur une erreur est un segfault, un transfert qui tourne au millième du débit voulu, ou une limite si grande qu’elle pourrait aussi bien être absente. Multiplier par 1 024, et écrire le chiffre en mébioctets en commentaire à côté.

Les puissances de deux sont le signe que le champ a été rempli correctement

Tout chiffre en mébioctets multiplié par 1 024 tombe sur un multiple de 1 024, et tout chiffre en mébioctets qui est une puissance de deux tombe sur une puissance de deux : 8 192, 16 384, 65 536, 262 144, 524 288, 1 048 576. Lire un fichier de configuration et y trouver 8192 indique que quelqu’un a pensé en mébioctets ; y trouver 8000 indique que quelqu’un a pensé en mégaoctets et que le champ est 2,43 % plus petit que prévu.

L’écart importe rarement isolément et importe sûrement en agrégat. Une limite fixée à 8 000 plutôt qu’à 8 192 est en déficit de 192 Kio, ce qu’aucun processus isolé ne remarquera ; un tampon dimensionné à 500 000 plutôt qu’à 524 288 à travers un parc représente une différence de débit mesurable, et il est impossible de l’attribuer après coup parce que rien n’a échoué. Les nombres ronds dans les champs binaires sont le signal de correction le moins cher qui existe.

Préférer le suffixe à l’arithmétique

Quand un outil accepte un suffixe, l’utiliser supprime l’arithmétique et documente l’intention dans le même geste. sort -S 512M, curl --limit-rate 200K, dd bs=4M, rsync --bwlimit=20M se lisent tous correctement un an plus tard, ce que sort -S 524288 ne fait pas. Le suffixe survit aussi à quelqu’un qui double la valeur, ce qu’un entier multiplié à la main ne survit en général pas.

L’exception est tout ce qui sera analysé par autre chose que l’outil lui-même. La surveillance, la gestion de configuration et l’outillage d’audit comparent fréquemment ces champs comme de simples entiers, et un mélange de 524288 et de 512M à travers un parc met la comparaison en déroute. Quand cela s’applique, choisir délibérément la forme entière et s’y tenir plutôt que de laisser chaque hôte enregistrer ce que son auteur préférait.

Les suffixes qui veulent dire mille

Le dd de GNU est le cas le plus clair parce qu’il les épelle tous les deux : bs=1K fait 1 024 octets, bs=1KB en fait 1 000, et bs=1KiB est accepté comme synonyme du premier. Rien dans la syntaxe n’indique celui que vous avez tapé, et un dd lancé avec le mauvais copie les bonnes données en morceaux de taille légèrement fausse, ce qui fonctionne d’habitude et occasionnellement ne fonctionne pas quand la destination est un périphérique à taille de bloc stricte.

Ailleurs, la règle empirique est que tout ce qui mesure un débit est probablement décimal et tout ce qui mesure de la mémoire est probablement binaire, parce que l’ingénierie des réseaux s’est standardisée sur les puissances de dix bien avant que le kibioctet ait un nom. Une liaison à 100 Mbit transporte 100 000 000 de bits par seconde et non 104 857 600, de sorte qu’un plafond de bande passante converti à partir d’un débit de liaison doit être calculé en décimal, puis converti dans les kibioctets qu’attend l’outil.

Limites de pile, threads, et 8 192 kibioctets

La pile par défaut de 8 Mio apparaît comme 8 192 parce que c’est l’unité dans laquelle compte ulimit -s, et il vaut la peine de convertir plutôt que de copier parce que le chiffre est par thread plutôt que par processus. Une JVM ou un serveur à un thread par connexion avec quelques centaines de threads réserve autant d’espace d’adressage quelques centaines de fois, ce qui est gratuit sur une machine 64 bits et épuise l’espace d’adressage sur une 32 bits bien avant d’épuiser la mémoire.

L’abaisser est un vrai levier de réglage et un vrai risque. Mettre 512 Kio — le champ prend 512 — suffit pour la plupart du code d’application et ne suffit pas pour un parseur profondément récursif ou quoi que ce soit qui pose un grand tampon sur la pile. La défaillance est un segfault sans message sur les limites, de sorte que le chiffre en mébioctets mérite d’être inscrit à côté de la modification ; 0,5 Mio s’explique de lui-même là où 512 ne s’explique pas.

Réglages de base de données dont le kB fait 1 024 octets

PostgreSQL énonce ses unités de mémoire comme kB, MB et GB et les définit comme binaires, de sorte que shared_buffers, work_mem, maintenance_work_mem et wal_buffers sont tous des multiples de kibioctets sous des étiquettes d’apparence décimale. SHOW shared_buffers renvoie la valeur dans l’unité qu’il juge la plus nette, et pg_settings la conserve en blocs de 8 Kio, de sorte que le même réglage peut se lire 128MB, 131072 kB et 16384 blocs sans qu’aucun ait tort.

MySQL prend des comptes d’octets avec des suffixes K, M et G optionnels qui sont également en 1 024, et les rapporte en octets. La conséquence pratique pour les deux est qu’une valeur copiée d’un guide de réglage qui citait des mégaoctets est 2,43 % plus petite que prévu par cran de préfixe, et 7,4 % quand on arrive aux réglages en gigaoctets — jamais assez pour qu’on le remarque et toujours assez pour que deux serveurs qui devaient se correspondre ne se correspondent pas tout à fait.

Arrondir un mébioctet fractionnaire dans un champ entier

Multiplier par 1 024 préserve toutes les valeurs qui étaient au départ des fractions sensées : un demi fait 512, un quart fait 256, trois quarts font 768, un huitième fait 128. Les valeurs qui venaient d’un calcul décimal ne survivent pas aussi proprement — 0,1 Mio fait 102,4 Kio et 1,3 Mio fait 1 331,2 — et le champ n’accepte qu’un entier, de sorte qu’une décision doit être prise plutôt que différée.

Le sens de l’arrondi dépend de ce qu’est le champ. Une limite, un plafond ou un maximum doit être arrondi vers le bas, parce que l’intention est « pas plus que cela » et que la dépasser la rend caduque. Un tampon, une réservation ou un minimum doit être arrondi vers le haut, parce qu’un tampon à un kibioctet en dessous d’une frontière naturelle peut coûter un tour d’allocation supplémentaire à chaque opération. Aucun des deux choix n’importe beaucoup ; le faire consciemment est ce qui empêche une revue de devoir décider lequel était voulu.

Convertir des Mio en Kio : questions fréquentes

Combien font 1 Mio en Kio ?

1 Mio vaut 1024 Kio. La valeur est exacte et non arrondie : la correspondance de mébioctet en kibioctet est fixée par définition.

Ce que je saisis est-il envoyé quelque part ?

Non. Le calcul se fait dans votre navigateur. Vous pouvez couper la connexion et continuer à calculer — c’est d’ailleurs la façon la plus simple de le vérifier.

Pourquoi mon disque affiche-t-il moins que ce qui est annoncé ?

Parce que deux unités différentes portent le même nom. Les fabricants comptent 1 Go = 1 000 000 000 octets ; Windows affiche des gibioctets, soit 1 073 741 824 octets, tout en les appelant « Go ». Le même disque paraît ainsi environ sept pour cent plus petit. Rien n’a disparu.

Dans l’autre sens : kibioctet en mébioctet

Un Kio vaut 0,000976563 Mio. C’est le même rapport lu à l’envers : un résultat obtenu sur une page et repassé par l’autre doit revenir à son point de départ.

D’où viennent ces chiffres

Ce que cette page affirme sur unités d’information se vérifie : voici les documents qui le fixent.

Comment cette page fonctionne

Le facteur figure dans la page sous forme de constante, et le calcul tient en quatre opérations. Rien n’est donc envoyé et rien n’est attendu : ce que vous saisissez ne quitte jamais le navigateur, faute de requête dans laquelle voyager.