Comprendre le digital, c'est aussi savoir compter sur ses doigts

Utiliser ses dix doigts est un luxe, disent les menuisiers. Heureusement, il existe des moyens pour compter avec beaucoup moins de doigts. Le système binaire n'en demande d'ailleurs qu'un. Le système octal, huit.

Le binaire

Compter avec un seul doigt revient à disposer de deux chiffres seulement. Nous allons les appeler, 0 et 1, comme dans le système de numération décimal, celui à dix chiffres que nous utilisons dans la vie de tous les jours. Le chiffre 0 correspond à zéro (doigt) et le chiffre 1 à un (doigt).

À défaut d'avoir plusieurs doigts, nous allons avoir besoin de plusieurs mains, numérotées. Remarque préliminaire : lorsque les informaticiens comptent, ils commencent par zéro, pas par un.

Bref, passer à la main suivante double la valeur associée. Les puissances grossissent vite ; c'est parfois un problème.

Nous allons donc pouvoir écrire des nombres en notant, à sa position, le nombre de doigt que présente chaque main, de droite à gauche, comme d'habitude. La main 0 la plus à droite, la main 1 juste à gauche de la main 0, la main 2 juste à gauche de la main 1, etc.

Pour distinguer l'écriture binaire de l'écriture décimale, nous reprenons une notation commune à plusieurs langages informatiques (Python, C, Java, etc.) en faisant précéder le nombre du préfixe 0b. Avec quatre mains, nous pouvons former les nombres 0b0101 et 0b1011, par exemple.

La valeur d'un nombre se calcule comme suit : pour chaque position (main), la puissance associée à cette position (main) est multipliée par le chiffre qui s'y trouve (0 ou 1).

Ainsi, 0b0101 représente 0 * 8 + 1 * 4 + 0 * 2 + 1 * 1 = 5 , tandis que 0b1011 représente 1 * 8 + 0 * 4 + 1 * 2 + 1 * 1 = 11. Nous retrouvons tous les nombres entiers ainsi. Réciproquement, chaque nombre entier ne peut s'écrire que d'une unique façon en binaire.

Autrement dit, vous pouvez compter en binaire dans la vie de tous les jours ; ça marche. Au risque d'être rapidement mis au ban de la société.

Pourquoi le binaire ?

Mais pourquoi s'infliger un autre système de numération, alors que le système décimal convient bien ?

D'une part, l'humanité a utilisé et utilisent encore plusieurs systèmes de numération. Le système binaire est dit aussi de base deux, le système décimal de base dix. Les Égyptiens comptaient aussi en base dix, mais les Babyloniens en base soixante (pensez aux secondes et aux minutes), les Mayas en base vingt et les Romains... Les Romains se sont pas mal compliqués la vie.

D'autre part, l'ordinateur et tous les systèmes électroniques à ma connaissance reposent sur le système binaire (en attendant l'ordinateur quantique). L'unité de base, s'appelle le bit. La main à un doigt peut être remplacée par diverses choses facilement. Un transistor par exemple : si le courant passe dans un transistor, le bit vaut 1, sinon il vaut 0. Même idée en regardant la présence d'un trou ou non dans une carte perforée, d'un creux ou non sur la surface d'un CD-ROM, du noir ou du blanc sur un code-barre ou un QR-code, de la polarité dans une cellule d'un disque dur, etc.

Rajouter des doigts

Le binaire est donc facile à mettre en oeuvre. En revanche, il est bavard : comme il ne dispose que de deux chiffres, il demande plus de symboles que le système décimal pour représenter le même nombre. Exemple : 32 en système décimal s'écrit 0b100000 en système binaire. C'est long.

Se limiter à deux chiffres est trop restrictif. Nous pouvons faire mieux, sans trop d'efforts. La loi de Miller nous annonce capables de garder en mémoire à court terme sept items, plus ou moins deux. Au-delà, ça demande un effort : il faut compter et mémoriser.

Plus généralement, nous sommes habitués à raisonner avec dix chiffres. Il paraît donc naturel d'augmenter le nombre de doigts pour se rapprocher de dix. Comme les ordinateurs manipulent des bits, le nombre de doigts doit être une puissance de deux. Deux candidats se présentent : base huit (système octal) et base seize (système hexadécimal).

Un meilleur nombre de doigts

Avant de présenter les systèmes octal et hexadécimal, une courte digression sur le nombre dix.

Ce nombre n'est pas terrible. Évidemment, multiplier par dix dans le système décimal revient à rajouter un zéro à la fin, ce qui est pratique. Toutefois, les autres systèmes ont la même propriété : multiplier par 0b10 dans un système binaire revient également à rajouter un zéro à la fin.

Il aurait été aussi pratique d'avoir quatre doigts par main, à l'instar des oiseaux et de pas mal de dinosaures. Et nettement plus pratique d'avoir six doigts par main. Ce qui concerne 1.7 naissances sur mille, et ca s'appelle l'hexadactylie.

En effet, dix doigts sur deux mains peuvent être divisés par deux ou cinq. Alors que douze doigts sur deux mains peuvent être divisés par trois, quatre ou six. Le nombre douze est donc plus maniable que le nombre dix. Cela explique sa présence : douze mois dans une année, douze heures dans une demi-journée, douze étoiles au drapeau européens, douze travaux d'Hercule, douze apôtres, douze califes et douze tribus d'Israël, une douzaine d'oeufs, etc.

Mais bon, l'évolution semble en avoir décidé autrement et nous restons avec nos mains à cinq doigts. La faute aux nageoires, probablement.

Système octal

Passons au système octal.

Pour être plus efficace que le système binaire, nous pouvons regrouper les bits. Avec quatre bits, nous pouvons compter jusqu'à 7, ce qui donne 8 chiffres en incluant le 0. Nous conservons ainsi le côté pratique des bits, mais nous disposons maintenant de 8 chiffres à la place de 2. Pour compter, il suffit de reprendre le même procédé que pour le binaire, mais chaque main a dorénavant sept doigts. Et chaque main est associée à une puissance de 8 (1, 8, 64, 512, 4096, 32768, etc.). Le préfixe de l'octal est 0o. Ainsi, 0o427 représente 4 * 64 + 2 * 8 + 7 = 279.

Le système octal est pratique avec les anciens processeurs ; son usage est maintenant tombé en désuétude au profit du système hexadécimal.

Système hexadécimal

Le système hexadécimal exige seize chiffres. Il nous faut donc ajouter six chiffres au dix que nous avons déjà (de 0 à 9). Pour s'épargner l'invention de nouveaux symboles, il est d'usage de se servir de la lettre A pour 10, B pour 11, C pour 12, D pour 13, E pour 14 et F pour 15. Alternative : les symboles de Boby Lapointe et son système bibi-binaire.

Le préfixe du système hexadécimal est 0x. À ce stade-là, brillant lecteur, tu auras donc deviné que 0xA3F représente 11 * 256 + 3 * 16 + 15 = 2623.

L'hexadécimal est aussi intéressant car il permet de représenter les octets facilement. Un octet est une succession de huit bits qui s'est imposée comme une unité pratique en informatique (notamment adaptée aux architectures des processeurs). Un octet peut prendre 256 valeurs différentes, ce qui correspond à un nombre à deux chiffres dans le système hexadécimal.

Des émojis

Le standard Unicode fixe des règles communes pour encoder des caractères depuis 1991. En particulier, l'UTF-8 associe à plusieurs centaines d'émojis des identifiants uniques, dans le but de pouvoir les afficher dans le monde entier sur des appareils différents.

Classiquement, le système hexadécimal est utilisé pour représenter ces identifiants uniques. Par exemple, l'identifiant de la loutre est 0x1F9A6. Pour faire apparaître ce mammifère aquatique nocturne sur une page web, il suffit de l'écrire 🦦 dans le HTML. La preuve : 🦦.

L'aspect peut changer suivant l'interface graphique (la loutre n'est pas encore super normalisée, mais elle fait ce qu'elle peut la pauvre), mais identifie clairement son air chafouin.

Des couleurs

Le système hexadécimal est fréquemment employé pour coder les couleurs. Chaque couleur est représentée par la quantité de rouge, de bleu et de vert qu'elle contient. Chacune de ces trois quantités est comprise entre 0 et 255, soit un nombre à deux chiffres par couleur fondamentale, ce qui donne six chiffres au total. Pour indiquer cette correspondance, le nombre est préfixée par un dièse #. Ainsi :

Ces codes ne sont pas pratiques pour nous, simples humains, mais c'est idéal pour un ordinateur.


Antoine