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.
- La main 0 correspond à 2 à la puissance 0, soit 1.
- La main 1 à 2 à la puissance 1, soit 2.
- La main 2 à 2 à la puissance 2, soit 4.
- La main 3 à 2 à la puissance 3, soit 8.
- La main 4 à 2 à la puissance 4, soit 16.
- La main 10 à 2 à la puissance 10, soit 1024.
- La main 100 à 2 à la puissance 100, soit 1267650600228229401496703205376.
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 :
-
#FF0000
: rouge pur ; -
#00FF00
: vert pur ; -
#0000FF
: bleu pur ; -
#000000
: noir pur ; -
#F0F0F0
: gris moyen ; -
#d8b6fb
: violet lavande immonde.
Ces codes ne sont pas pratiques pour nous, simples humains, mais c'est idéal pour un ordinateur.