Fichier binaire

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

En informatique, un fichier binaire est une expression pouvant faire référence, selon le contexte de son utilisation, à différents concepts connexes.

Actuellement (début du XXIe siècle), cette expression est principalement usitée sur les sites web consacrés aux téléchargements de logiciels afin de faire expressément référence aux versions (d'un logiciel donné) directement prêtes à être installées ou utilisées (sur une plate-forme informatique quelconque). Ceci par opposition aux versions disponibles du même logiciel (sur le même site web) qui, elles, doivent préalablement subir des traitements informatiques spécifiques avant de pouvoir être utilisables par l'utilisateur final (comme, par exemple, être compilées ou être décompressées par l'utilisateur via des manipulations techniques parfois complexes). Il s'agit là d'un abus de langage provenant du terme anglophone associé : binaries (littéralement « binaires », d'où cette expression).


Moins couramment usité, et principalement en langage technicien, cette expression peut également faire référence à :

  • des fichiers dont les données ne peuvent pas être interprétées telles quelles par un être humain. C'est-à-dire, des données nécessitant, pour recouvrer leur signification propre, d'être préalablement interprétées via un logiciel dédié : non lisibles par l’œil/l'être humain. Et donc, inversement, ne revêtant aucune signification particulière pour un être humain lorsque ces informations (typiquement groupés en octets) sont retranscrites visuellement (typiquement, via des glyphes ASCII alphabétiques ou purement numériques via un éditeur de texte brute ou un éditeur hexadécimal pouvant également les retranscrire graphiquement sous la forme de pixels aux codage des couleurs paramétrable). Par exemple, un fichier audio n'est qu'une suite de nombres (pouvant être affichés par un éditeur hexadécimal) mais n'ayant aucune signification sémantique particulière sans un logiciel spécifiquement chargé de les convertir en signaux audiophoniques ;
  • des fichiers contenant des données dans leur état brut, qu'elles soient structurés dans un format propriétaire obscur ou qu'elles n'aient aucune structure particulière ou connue (raw). C'est le cas, par exemple, des fichiers d'enregistrement temporel d'informations pouvant provenir, par exemple, de senseurs/capteurs (thermomètres, microphone, sismographe, etc.). Dans ce cas, le terme binaire fait référence au fait que les données ne sont qu'une suite de valeurs numériques, généralement encodées dans un format propriétaire (propre au constructeur du senseur/capteur et interprétable uniquement via un logiciel dédié) ;
  • des fichiers d'empreinte mémoire contenant un instantané dont il n'est pas nécessaire de connaitre la structure intrinsèque ou dont cette structure n'a aucune importance pour l'utilité finale du fichier (n'étant qu'une copie « telle quelle » des données à conserver/utiliser). C'est le cas, par exemple, des fichiers dits « ROM » destinés aux émulateurs matériels (typiquement, les fichiers contenant l'empreinte mémoire des cartouches électroniques des consoles de jeu vidéo et dédiés à des émulateurs logiciels fonctionnant sur ordinateur ou sur d'autres consoles de jeux vidéo) ;
  • de manière générale, aux fichiers des programmes compilés, directement utilisables par opposition à leur code-source qui, lui, est contenu dans un fichier textuel interprétable par un être humain. Il s'agit parfois de simples empreintes mémoire de programmes, ou alors, de programmes plus primitifs que la normale (d'où, dans ce cas, l'emploi de cette expression afin de les discernés des autres, de plus haut niveau) ;
  • des fichiers portant l'extension .bin dans leur nom sont généralement aussi qualifié ainsi. Ainsi, beaucoup de jeux vidéo en 3D (nécessitant beaucoup de graphismes) possèdent généralement des fichiers portant cette extension (ou similaire) et sont dits binaires du fait qu'ils contiennent, de toute évidence, les graphismes du jeu, mais sans pour autant que l'on connaisse précisément le format d'encodage propriétaire employé pour les structurer (il s'agit parfois d'images mémoire compressées et cryptées) ;
  • plus rarement, des fichiers contenant des données nécessaires au fonctionnement d'un programme, mais n'étant pas le programme lui-même (où le programme — ici appelé « code » — et les données sont donc séparés chacun dans un fichier et ce, pour diverses raisons techniques possibles).


Fichiers et binaire[modifier | modifier le code]

Par définition, un fichier est un conteneur d'informations (exemple : une fiche de bibliothèque, ou encore, un livre, etc.). Les applications technologiques contemporaines de l'informatique étant principalement basées sur celles de l'électronique, l'usage du système de numération binaire est actuellement majoritairement utilisé pour représenter (traiter, stocker, etc.) les informations au sein des fichiers informatiques. Autrement dit, actuellement, tout fichier informatique est, technologiquement, de nature binaire. Dit encore autrement : « tout fichier contemporain n'est qu'une succession de 1 et de 0 ».

Cette expression n'a donc de sens que pour relativiser deux notions distinctes des fichiers informatiques, car, en effet, ce qui est intéressant dans l'information n'est pas sa nature (binaire ou autre) mais sa signification, son sens, la sémantique de cette information. C'est donc dans ce cadre qu'intervient cette expression.

Les informations de nature binaire sont généralement segmentées sous la forme de mots de longueurs fixes appelés des bytes. Généralement, ces bytes ont une longueur de 8 bits et sont donc appelés des octets. Ainsi, les fichiers informatiques binaires ne sont qu'une succession de bytes, et, plus généralement, de bytes de 8 bits et donc, d'octets.

Tous les fichiers informatiques contemporains étant, par nature technologique même, des fichiers binaires, la problématique ici est de déterminer la signification de chacun de ces bits, de ces bytes, de ces octets.


C'est là qu'entre en jeu la notion d'interprétation : pour un humain ou pour un ordinateur. Les bits, en tant que tels, ne sont pas très expressifs pour les humains qui, eux, utilisent des glyphes (lettres) issus généralement d'un alphabet. C'est pourquoi, historiquement, dès les débuts de l'avènement de l'ère de l'informatique, on a créé des tables d'association entre ces glyphes (dépendants de la langue, et donc, du pays) et les octets. Un standard issu de l'imprimerie et, plus particulièrement, des machines à écrire, s'est rapidement dégagé donnant ainsi naissance à la table des caractères ASCII.

Ainsi, à chaque octet correspond un caractère ASCII donné. À noter que sur les 256 caractères ASCII disponibles, les 32 premiers ne possèdent pas de glyphes associés et sont donc réservés à des fonctions spéciales dérivées du fonctionnement des machines à écrire à chariot de l'époque (telles que les désormais célèbres « retour chariot », « saut de ligne » ou la non moins célèbre « tabulation », etc.). À noter également que les 128 derniers caractères (c'est-à-dire, la deuxième moitié de la table) sont réservés aux spécificités des dialectes nationaux. Pour des raisons historiques, les 128 premiers sont du type latin car anglophones et que, par conséquent, ce système a rapidement été confronté à ses limites intrinsèques et progressivement complété (mais pas remplacé : il existe toujours) par des systèmes plus modernes tel que, actuellement, l'Unicode.

La problématique[modifier | modifier le code]

Les données des fichiers informatiques actuels étant conservés sous une forme binaire, la problématique première réside dans la forme que doivent revêtir ces données afin d'être représentés à un utilisateur humain désireux de consulter un fichier donné.

La représentation des données dépend, naturellement, de leur nature, non pas physique (ici, binaire), mais de leur nature sémantique. Ainsi, si les données du fichier (c'est-à-dire, les suites de bits, de bytes, d'octets) sont de nature textuelle, il faudra les présenter à l'utilisateur humain sous la forme de caractères d'écriture. Si elles sont de nature graphique, sous la forme de graphismes, si de nature audiophonique, sous la forme d'ondes sonores, etc.

La problématique se reporte donc vers le dispositif chargé de présenter à un utilisateur humain les informations contenues dans un fichier un informatique. Or, par défaut, on considère ici implicitement que les fichiers doivent pouvoir être présenté sous la forme de caractères d'imprimerie (via la table de correspondance ASCII).

Le problème est que, par exemple, un fichier contenant des informations audios, une fois ces informations affichées à l'utilisateur sous la forme de chiffres (ou autre, mais pas sous leur forme dédiée d'ondes sonores), ces informations n'auront pas beaucoup de sens, de significations pratiques, pour l'utilisateur humain, car il nous est bien difficile de procéder à l'opération inverse (c'est-à-dire, transformer, par l'esprit, une suite de nombres lues en une symphonie harmonieuse).

La première distinction faite par l'usage de cette expression concerne donc les fichiers qui, une fois convertis en glyphes, ont une signification pour un utilisateur humain, des fichiers qui, une fois convertis par le même procédé, ne revêtent aucune signification particulière pour un utilisateur humain.


Un fichier binaire est un contenant des données sous forme d'octets qui n'ont donc de sens que pour le logiciel qui les utilise (et non pour les utilisateurs finaux). Si par stricte définition tout fichier est binaire, l'usage veut que l'on qualifie un fichier de binaire pour indiquer qu'il ne s'agit pas d'un fichier texte. Ces fichiers peuvent être ouverts par des éditeurs de texte (déconseillé aux utilisateurs non expérimentés), mais les données y seront mal représentées et surtout, incompréhensibles.

(La plupart des fichiers existants sont des fichiers binaires, il s'agit notamment des fichiers contenant du son, de la vidéo, des images, du langage machine, des empreintes mémoire, etc.).

Pour décrire l'organisation des données dans ce fichier, on parle de format de fichier.

Évolution sémantique[modifier | modifier le code]

Au début des années 1980, les formats de fichiers binaires se systématisent dans les environnements micro-informatiques, où l'encombrement mémoire est critique. En effet, un format binaire est souvent plus compact qu'un format de fichier texte (il occupe moins d'espace dans la mémoire vive et sur le périphérique de stockage). L'encombrement mémoire n'est pas suffisant à lui seul pour expliquer ce foisonnement.

Fichiers propriétaires[modifier | modifier le code]

Un format de fichier binaire peut être libre (exemple le format de fichier de Gimp XCF). S'il ne l'est pas, il est nécessaire de lui appliquer des méthodes d'ingénierie inverse, ce qui en ralentit la compréhension. Par son format de fichier binaire tenu secret (format fermé), un éditeur de logiciels propriétaires peut garder la mainmise sur ses clients en limitant l'interopérabilité de ses fichiers, car il est peu probable que ses concurrents réussissent à réaliser un logiciel équivalent qui exploiterait son format de fichier binaire aussi bien que son propre logiciel.

Sous les systèmes d'exploitation de type Unix, en revanche, la culture était beaucoup plus orientée vers des formats en texte brut. Ceci reste vrai : les fichiers de configurations, notamment, sont quasi-systématiquement lisibles par n'importe quel éditeur de texte.

Les fichiers binaires les plus courants sont les fichiers d'images, les formats propriétaires des logiciels de bureautique (traitements de texte, tableurs…) et les applications compilées.

Fichiers binaires et programmes[modifier | modifier le code]

Sur les machines 8 bits, un fichier binaire est souvent un programme compilé, écrit le plus souvent en assembleur pour gagner de la place. L'entête du fichier indiquait l'adresse du début d'emplacement en mémoire ainsi qu'une adresse d'exécution.

Visualisation[modifier | modifier le code]

Pour visualiser correctement le contenu des fichiers binaires, il est préférable d'utiliser un éditeur hexadécimal. Ces éditeurs peuvent convertir chaque octet sous la forme de nombres hexadécimaux et de caractères ASCII. L'utilisation d'éditeurs dits « de texte brute » (utilisant donc les 256 caractères ASCII de l'ordinateur - selon le pays et la police d'écriture utilisée) n'est pas recommandé car ils ne sont pas adaptés. En effets, ils seront lents, ne pourront parfois ouvrir que des fichiers d'une taille limité, et interpréterons les 32 premiers octets comme des caractères ASCII (qui sont spéciaux et agissent sur le texte lui-même). Par exemple, l'octet 13 sera interprété par l'éditeur comme une tabulation, l'octet 0 ne sera sans doute pas affiché ou bloquera l'affichage de la suite du fichier…

Si la visualisation est possible via des éditeurs hexadécimaux, la modification des fichiers binaires par ce biais est à proscrire du fait qu'ils peuvent affecter en profondeur le fonctionnement du logiciel qui les utilise (ou du logiciel lui même lorsqu'il s'agit de fichier dits « exécutables »). La plupart du temps, le fichier sera reconnu par les logiciels comme étant corrompu du fait de méthodes de sécurité (telles que des bits de parité positionnés à la fin de blocs logiques) implémentés par le format utilisé.

Voir aussi[modifier | modifier le code]