Code binaire : principe, codage, règles, symboles
"Code binaire : principe, codage, règles, symboles"

Code binaire : principe, codage, règles, symboles

Code binaire : principe, codage, règles, symboles

Le code binaire, qui utilise exclusivement des 0 et des 1, est à la base du numérique et de l'informatique. Il est utile de comprendre son principe pour mieux maîtriser ordinateurs et logiciels.

Ce n'est un secret pour personne : nous vivons à l'ère du numérique. C'est sur le numérique que repose l'informatique - et donc l'ordinateur. C'est aussi le numérique qui se cache derrière le CD, le MP3, le DVD, la TNT, le GPS et bien d'autres technologies – pas toutes affublées d'acronymes anglo-saxons, fort heureusement ! – qui ont profondément modifié notre quotidien. Et c'est encore sur le numérique que s'appuient tous les systèmes de communications actuels comme le GSM (la téléphonie mobile), et, bien sûr, Internet.

Disons-le clairement : de la même façon qu'il n'est pas nécessaire d'être mécanicien pour conduire une voiture, il n'est pas indispensable de comprendre le numérique et le code binaire pour utiliser un ordinateur ou un smartphone. En revanche, il n'est pas inutile d'avoir quelques notions sur le sujet quand on veut se plonger dans la technique, que ce soit pour paramétrer ou dépanner un appareil, un système d'exploitation ou un logiciel.      

Des nombres pour tout décrire

Le numérique – que les Anglo-Saxons appellent digital -, c'est simplement le procédé qui consiste à " écrire ", ou plus exactement, à " décrire " à l'aide de nombres. Il peut paraître curieux – surtout pour ceux qui ne raffolent pas des maths… – que l'on puisse réduire toutes sortes d'informations à de simples nombres. Car si l'utilisation du numérique semble naturelle et légitime pour représenter des éléments déjà " chiffrés " (des sommes d'argent, des quantités de produits, des numéros d'identification, des dimensions, etc.), elle l'est moins, a priori, quand on parle de textes, d'images ou de sons, par exemple.

Dans le cas des textes, le processus est pourtant très simple puisqu'il consiste à attribuer un numéro unique (donc un nombre) à chaque symbole (lettre de l'alphabet, signe de ponctuation). Dès lors que l'on a défini une table de correspondance, on peut " coder " n'importe quel texte à l'aide de nombres, sans perdre la moindre information. C'est d'ailleurs sur ce principe que reposent bon nombre de codes secrets élémentaires utilisés par les apprentis espions…


L'ASCII de A à Z

Largement utilisé en informatique, l'ASCII (American Standard Code for Information Interchange) est une norme d'encodage informatique associant les caractères de l'alphabet latin et les symboles associés (ponctuation, parenthèses, unités, etc.) à des nombres compris entre 0 et 127. En ASCII, le a est représenté par le nombre 97, le A par le 65, le 3 par le 52, le & par le 38, le ( par le 40, etc. L'ASCII étendu exploite les nombres de 128 à 255 pour coder les caractères accentués et divers symboles graphiques (le é est représenté par 130, le ù par 151, le ½ par 171, etc.). D'autres normes du même type existent, telles que l'Unicode, qui présente l'avantage de coder des caractères non latins.

Quadrillage d'image

Pour les images, c'est un peu plus complexe. Très schématiquement, la technique la plus courante consiste à décomposer une image en un ensemble de points élémentaires (ce sont les fameux " pixels " dont on parle notamment en photo). Pour cela, on la " quadrille " (comme si l'on posait un grillage dessus) et on attribue un code numérique (un nombre, donc) à chaque carreau selon sa couleur, en se référant, là encore une table de correspondance. L'image se voit ainsi décrite dans un tableau (avec des lignes et des colonnes), chaque cellule représentant un de ses points. Evidemment, il convient de quadriller finement l'image (avec des carreaux très petits) pour en avoir une représentation fidèle (à défaut, le résultat paraît très grossier…) et pour déterminer la couleur " moyenne " d'un carreau. Et bien sûr, plus on veut représenter de couleurs différentes, plus la table doit contenir de codes : une table à deux codes suffit pour coder une image en noir et blanc, mais il faut utiliser plusieurs millions de nombres pour représenter fidèlement toutes les nuances du spectre visible par l'œil humain.

Formes géométriques

La méthode du quadrillage (parfois appelée " mode point " ou " bitmap " en anglais) n'est pas le seul moyen de coder des images en numérique. Une autre technique, dite " vectorielle ", consiste à utiliser des formes géométriques élémentaires (droites, arcs de cercles, polygones, etc.) et à les décrire avec des formules mathématiques (les mêmes que celles qu'on apprend en cours de géométrie…). Si ce procédé n'est pas adapté à toutes les images (il ne présente aucun avantage pour les photos, par exemple), il offre le double avantage d'autoriser facilement des mises à l'échelle et de générer des descriptions très compactes. Il est utilisé dans toutes sortes de domaines, notamment pour dessiner les caractères qui s'affichent à l'écran ou qui s'impriment sur le papier dans une imprimante…

Echantillons sonores

Le cas du son est différent dans la mesure où, contrairement aux textes et aux images fixes, il fait intervenir le temps. Il s'agit en effet d'une onde, que l'on peut se représenter graphiquement comme une courbe en forme de vague complexe. Il suffit de mesurer l'amplitude de cette onde (la hauteur de la vague) à intervalles réguliers (on parle d'échantillonnage) pour obtenir une suite de nombres représentant le son. Bien entendu, plus il y a de points de mesure, plus cette représentation est fidèle. Et, comme pour l'image, plus l'échelle de nombres utilisée est étendue, plus on peut retranscrire de nuances.

Bien que volontairement simplifiés, ces trois exemples suffisent pour comprendre comment toutes sortes d'informations peuvent être représentées par des nombres, en combinant parfois divers procédés. Ainsi, la vidéo numérique (la technique qui est utilisée aussi bien pour la TNT, le DVD-vidéo et les caméscopes DV que pour les vidéos diffusées sur Internet ou les séquences circulant entre téléphones portables) mélange logiquement les techniques utilisées pour l'image et le son (une séquence vidéo étant une suite d'images fixes associées à du son).

Un code universel

Mais pourquoi s'échiner à vouloir tout représenter par des nombres ? D'abord, parce que les nombres constituent justement un moyen simple et universel pour tout décrire ! Ensuite, parce qu'une fois mises sous forme numérique, les informations peuvent être facilement copiées sans être altérées – il est plus simple de copier une série de nombres que de reproduire un dessin à l'identique… - mais aussi " traitées " à l'aide de divers procédés mathématiques. Ainsi, pour changer une couleur dans une image, par exemple, il suffit de rechercher tous les nombres correspondant à une teinte et de les remplacer par code d'une autre…

Bien évidemment, les nombres sont par essence abstraits : et pour les manipuler, les mémoriser et les transférer, il a fallu trouver des techniques permettant de les matérialiser. Et de les simplifier au maximum. C'est là qu'intervient le fameux système binaire.

Un alphabet à deux lettres

Le système binaire est une technique de numération extrêmement rustique dans la mesure où il n'utilise que deux symboles : le 0 et le 1 ! Aussi curieux que cela puisse paraître de prime abord, on peut en effet écrire n'importe quel nombre avec ces deux chiffres uniquement - après tout, nous n'utilisons bien que dix chiffres pour tout écrire dans notre système décimal… Voici comment se présentent les premiers nombres écrits en décimal et en binaire : 0 = 0, 1 = 1, 2 = 10, 3 = 11, 4 = 100, 5 = 101, 6 = 110, 7 = 111, 8 = 1000, 9 = 1001, 10 = 1010, 11 = 1011, 12 = 1100, 13 = 1101, 14 = 1110, 15 = 1111, etc.

Certes, ce système devient vite rébarbatif à manipuler, et il est nettement moins compact que notre bon vieux système décimal… Mais il possède l'immense avantage de ne nécessiter que deux symboles. Ce sont ces symboles que l'on appelle des " bits " (contraction des mots anglais binary digit, ou nombre binaire). En fait, c'est comme si l'on disposait d'un alphabet à deux lettres !

Dès lors, il suffit de disposer de deux formes différentes ou de deux " états " distincts pour représenter le système binaire dans le monde physique : par exemple, allumé ou éteint, ouvert ou fermé, vide ou plein, noir ou blanc, etc.

Imaginez ainsi que vous disposiez de deux types de billes (noire ou blanche) en quantité illimitée. Si vous avez défini une table de correspondance pour coder chaque lettre de l'alphabet et chaque symbole, vous pourriez " écrire " n'importe quel livre en utilisant uniquement des billes noires et blanches ! Evidemment, sa lecture exigerait un brin de concentration et un certain apprentissage, mais, après tout le célèbre code Morse – qui a largement prouvé son utilité dans l'Histoire - n'utilise lui aussi que deux symboles…


De Boole à Shannon

Si l'on a privilégié le système binaire, c'est parce qu'il permet de mettre en œuvre assez simplement des processus automatisés s'appuyant sur l'algèbre de Boole. Ce mathématicien britannique du XIXe siècle a en effet développé une théorie sur la logique mathématique en établissant des règles d'associations (opérations, déductions, etc.) utilisant exclusivement deux valeurs : Vrai ou Faux (que l'on peut remplacer pour Oui ou Non, ou par… 0 et 1). Ces règles ont ensuite été utilisées par Shannon, un ingénieur-mathématicien américain qui a posé, dès 1938, les bases de la théorie de l'information, celle-là même qui sert de fondement à l'informatique…

Signaux électriques

Le système binaire est assez facile à matérialiser sous forme électrique. Il suffit, très schématiquement, que le passage d'un courant électrique dans un circuit corresponde à un 1 et que son absence corresponde à un 0 – ou d'imaginer une lampe qui s'allume et qui s'éteint. C'est sur ce principe, et donc grâce à la fée électricité – secondée dans certains cas par ses cousines, le magnétisme et l'optique –, que reposent la plupart des technologies numériques actuelles, celles qui sont utilisées notamment nos ordinateurs.

Toutes les informations que ces formidables machines traitent se retrouvent ainsi, à un moment donné, sous forme d'impulsions électriques symbolisant des 0 et des 1 et circulant entre des circuits électroniques. Car depuis plus de cinquante ans, tout repose sur l'électronique, et notamment sur ce que l'on appelle des " circuits intégrés ". Communément appelés " puces " - du fait qu'ils sont fabriqués dans de minuscules boîtiers munis de petites pattes métalliques qui les font ressembler à ces charmants insectes… -, ils regroupent sous forme miniaturisée des circuits intégrés très complexes conçus à partir de composants élémentaires : les transistors.

Interrupteurs miniatures

Schématiquement, un transistor fonctionne comme un interrupteur ou un robinet : il laisse ou non passer un courant électrique selon l'état d'une commande faisant office de " bouton " ou de " poignée ". En interconnectant des transistors selon des schémas très sophistiqués, on réalise des dispositifs capables de réaliser de nombreuses opérations (additions, multiplications, divisions, remplacements, etc.) sur des signaux électriques représentant des informations. C'est ce processus qui à la base du traitement informatique.

Bien évidemment, tout ceci se passe à une échelle microscopique. Certaines puces faisant à peine quelques millimètres carrés intègrent ainsi plusieurs dizaines de millions de transistors ! Et elles " travaillent " très vite puisqu'elles sont capables d'effectuer plusieurs centaines de millions d'opérations par seconde ! C'est la conjonction de cette haute densité et de cette cadence élevée qui permet de concevoir des véritables usines à calculs capables de réaliser des traitements complexes sur des informations codées à la base sous une forme extrêmement rudimentaire (des 0 et des 1). Voilà sur quoi repose la " magie " de l'informatique…

Des langages homme-machine

Les concepteurs de logiciels – on les appelle " développeurs " - n'écrivent évidemment pas leurs programmes avec des 0 et des 1, des symboles que seuls les circuits électroniques peuvent " comprendre " ! Ils utilisent des langages plus évolués qui reposent sur des termes plus compréhensibles – pas pour les néophytes ! – et des règles de syntaxe très strictes, comme toute langue, et qui permettent d'enchaîner des instructions de manière structurée. Il existe de très nombreux langages de programmation (comme le C, le C++, le Java, le PHP, le Basic, le Pascal, etc.), certaines généralistes, d'autres spécialisés, mais qui nécessitent tous de la rigueur, de la logique et, quelques connaissances en mathématiques…

Présentation du binaire

Vers la fin des années 30, Claude Shannon démontra qu'à l'aide de contacteurs (interrupteurs) fermés pour "vrai" et ouverts pour "faux" il était possible d'effectuer des opérations logiques en associant le nombre 1 pour "vrai" et 0 pour "faux".

Ce codage de l'information est nommé base binaire. C'est avec ce codage que fonctionnent les ordinateurs. Il consiste à utiliser deux états (représentés par les chiffres 0 et 1) pour coder les informations.

L'homme calcule depuis 2 000 ans avant Jésus-Christ avec 10 chiffres (0, 1, 2, 3, 4, 5, 6, 7, 8, 9), on parle alors de base décimale (ou base 10). Toutefois dans des civilisations plus anciennes ou pour certaines applications actuelles d'autres bases de calcul ont et sont toujours utilisées :

  • base sexagésimale (60), utilisée par les Sumériens. Cette base est également utilisée dans le système horaire actuel, pour les minutes et les secondes ;
  • base vicésimale (20), utilisée par les Mayas ;
  • base duodécimale (12), utilisée par les anglo-saxons dans leur système monétaire jusqu'en 1960 : un " pound " représentait vingt " shilling " et un " shilling " représentait douze " pences ". Le système d'heure actuel fonctionne également sur douze heures (notamment dans la notation anglo-saxonne) ;
  • base quinaire (5), utilisée par les Mayas ;
  • base binaire (2), utilisée par l'ensemble des technologies numériques.

Bit

Le terme bit (b avec une minuscule dans les notations) signifie " binary digit ", c'est-à-dire 0 ou 1 en numérotation binaire. Il s'agit de la plus petite unité d'information manipulable par une machine numérique. Il est possible de représenter physiquement cette information binaire :

  • par un signal électrique, magnétique ou lumineux , qui, au-delà d'un certain seuil, correspond à la valeur 1 ;
  • par des aspérités géométriques dans une surface ;
  • grâce à des bistables, c'est-à-dire des composants électroniques qui ont deux états d'équilibre (l'un correspond à l'état 1, l'autre à 0).

Avec un bit il est ainsi possible d'obtenir deux états : soit 1, soit 0. Grâce à 2 bits, il est possible d'obtenir quatre états différents (2*2) :

0 0
0 1
1 0
1 1

Avec 3 bits, il est possible d'obtenir huit états différents (2*2*2) :

Valeur binaire sur 3 bits Valeur décimale
000 0
001 1
010 2
011 3
100 4
101 5
110 6
111 7

Pour un groupe de n bits, il est possible de représenter 2^n valeurs.

Poids des bits

Dans un nombre binaire, la valeur d'un bit, appelée poids, dépend de la position du bit en partant de la droite. A la manière des dizaines, des centaines et des milliers pour un nombre décimal, le poids d'un bit croît d'une puissance de deux en allant de la droite vers la gauche comme le montre le tableau suivant :

Nombre binaire 1 1 1 1 1 1 1 1
Poids 2^7 = 128 2^6 = 64 2^5 = 32 2^4 = 16 2^3 = 8 2^2 = 4 2^1 = 2 2^0 = 1

Conversions

Pour convertir un mot binaire en nombre décimal, il suffit de multiplier la valeur de chaque bit par son poids, puis d'additionner chaque résultat. Ainsi, le mot binaire 0101 vaut en décimal :

2^3x0 + 2^2x1 + 2^1x0 + 2^0x1 = 8x0 + 4x1 + 2x0 + 1x1 = 5

Octet

L'octet (en anglais byte ou B avec une majuscule dans les notations) est une unité d'information composée de 8 bits. Il permet par exemple de stocker un caractère, tel qu'une lettre ou un chiffre.

Ce regroupement de nombres par série de 8 permet une lisibilité plus grande, au même titre que l'on apprécie, en base décimale, de regrouper les nombres par trois pour pouvoir distinguer les milliers. Le nombre " 1 256 245 " est par exemple plus lisible que " 1256245 ".

Une unité d'information composée de 16 bits est généralement appelée mot (en anglais word).

Une unité d'information de 32 bits de longueur est appelée mot double (en anglais double word, d'où l'appellation dword).

Pour un octet, le plus petit nombre est 0 (représenté par huit zéros 00000000), et le plus grand est 255 (représenté par huit chiffres " un " 11111111), ce qui représente 256 possibilités de valeurs différentes.

2^7 =128 2^6 =64 2^5 =32 2^4 =16 2^3 =8 2^2 =4 2^1 =2 2^0 =1
0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1

KiloOctets, MégaOctets

Longtemps l'informatique s'est singularisée par l'utilisation de différentes valeurs pour les unités du système international. Ainsi beaucoup d'informaticiens ont appris que 1 kilooctet valait 1024 octets. Or, depuis décembre 1998, l'organisme international IEC a statué sur la question (http://physics.nist.gov/cuu/Units/binary.html). Voici donc les unités standardisées :

  • Un kilooctet (ko ou kB) = 1000 octets
  • Un Mégaoctet (Mo ou MB) = 1000 ko = 1 000 000 octets
  • Un Gigaoctet (Go ou GB) = 1000 Mo = 1 000 000 000 octets
  • Un Téraoctet (To) = 1000 Go = 1 000 000 000 000 octets
Nota Attention ! De nombreux logiciels (parfois même certains systèmes d'exploitation) utilisent toujours la notation antérieure à 1998 pour laquelle :
  • Un kilooctet (ko) = 2^10 octets = 1024 octets
  • Un Mégaoctet (Mo) = 2^20 octets = 1024 ko = 1 048 576 octets
  • Un Gigaoctet (Go) = 2^30 octets = 1024 Mo = 1 073 741 824 octets
  • Un Téraoctet (To) = 2^40 octets = 1024 Go = 1 099 511 627 776 octets

L'IEC a également défini le kilo binaire (kibi), le méga binaire (Mébi), le giga binaire (Gibi), le tera binaire (Tebi).
Voici leurs définitions :

  • Un kibioctet (kio ou kiB) vaut 2^10 = 1024 octets
  • Un Mébioctet (Mio ou MiB) vaut 2^20 = 1 048 576 octets
  • Un Gibioctet (Gio ou GiB) vaut 2^30 = 1 073 741 824 octets
  • Un Tébioctet (Tio ou TiB) vaut 2^40 = 1 099 511 627 776 octets

Il est également utile de noter que la communauté internationale dans son ensemble utilise préférentiellement le nom de " byte " plutôt que le terme " octet " purement francophone. Cela donne les notations suivantes pour kilobyte, mégabyte, gigabyte et terabyte :

kB, MB, GB, TB
Nota Notez l'utilisation d'un B majuscule pour différencier Byte et bit.

Voici une capture d'écran du logiciel Internet Explorer, navigateur internet, montrant l'utilisation de cette notation :

Opérations en binaire

Les opérations arithmétiques simples telles que l'addition, la soustraction et la multiplication sont faciles à effectuer en binaire.

Addition binaire

L'addition en binaire se fait avec les mêmes règles qu'en décimale :
On commence à additionner les bits de poids faible (les bits de droite) puis on a des retenues lorsque la somme de deux bits de même poids dépasse la valeur de l'unité la plus grande (dans le cas du binaire : 1), cette retenue est reportée sur le bit de poids plus fort suivant...

Par exemple :

  0 1 1 0 1
+ 0 1 1 1 0
- - - - - -
  1 1 0 1 1

Multiplication binaire

La table de multiplication en binaire est très simple :

  • 0x0=0
  • 0x1=0
  • 1x0=0
  • 1x1=1

La multiplication se fait en formant un produit partiel pour chaque digit du multiplicateur (seuls les bits non nuls donneront un résultat non nul). Lorsque le bit du multiplicateur est nul, le produit partiel est nul, lorsqu'il vaut un, le produit partiel est constitué du multiplicande décalé du nombre de positions égal au poids du bit du multiplicateur.

Par exemple :

    0 1 0 1 multiplicande
x   0 0 1 0 multiplicateur
- - - - - -
    0 0 0 0
  0 1 0 1  
0 0 0 0    
- - - - - -
  0 1 0 1 0
Autour du même sujet