La découverte du codage binaire dans la Chine antique

Après la numération sexagésimale et tabulaire des Babyloniens dans l’ancienne Mésopotamie puis le réemploi des cartes imprimées des orgues de Barbarie puis des métiers Jacquard dans les machines d'IBMnous allons aborder ici une autre source antique de l’informatique : le codage binaire dans l’antiquité chinoise. C’est le philosophe allemand Leibniz qui, en 1703, a fait connaître en Europe un manuel de magie divinatoire dans lequel d’étranges notations utilisaient déjà ces conceptions mathématiques il y a au moins 2500 ans.

 

Par C. R.

Publié le 08/09/2022

dernière modification le 09/09/2022

Ce titre d'un ouvrage publié en 1703 par le philosophe allemand polyglotte Gottfried Wilhelm Leibniz (Explication de l’arithmétique binaire, qui se sert des seuls caractères 0 et 1 ; avec des remarques sur son utilité, et sur ce qu’elle donne le sens des anciennes figures chinoises de Fohy, d'après cette traduction du XVIIIe siècle) suggère qu'il entrevoyait déjà l'intérêt phénoménal du codage binaire (pratiqué dans l'antiquité chinoise en lien avec la divination et avec la philosophie), qui ouvrait la voie à l'informatique. 

Comment décrire le codage binaire le plus simplement possible ?

 

Le principe du codage binaire consiste à transformer n’importe quelle chaîne de lettres ou de nombres en une suite de symboles correspondant à seulement deux états opposés comme, par exemple :

  • 0 / 1
  • long/bref
  • plein/vide
  • troué/non troué
  • le courant passe / le courant ne passe pas

...

C’est le principe de l’informatique et de l’électronique, mais aussi du langage morse, des cartes perforées de l'orgue de barbarie, des métiers Jacquard et des premières machines de mécanographie d'IBM, etc.

 

Cela permet d’écrire les nombres avec seulement deux signes.

 

Ce codage binaire (la transformation de n'importe quelle chaîne de caractères en signes binaires) utilise bien sûr la numération binaire (l'écriture des nombres en base deux, et non dans la base 10 que nous avons l'habitude d'utiliser pour la numération décimale).

 

La numération (à ne pas confondre avec la numérotation qui est l'attribution d'un numéro à un ensemble d'objets ou de personnes) est tout simplement un système concret d'écriture des nombres (avec un certain nombre de signes et des règles).

 

Voici un petit tableau de correspondance entre la numération décimale (en chiffres arabes ici) et la numération binaire (en chiffres arabes également ici) :

Système décimal

(dix sortes de caractères)

Système binaire

(2 sortes de caractères)

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

etc.

 

etc.

 

On peut remarquer au passage que dans le système binaire les puissances de 2 sont marquées par un zéro, tout comme les puissances de 10 dans le système décimal :

Puissances de 10

dans le système décimal

Puissances de 2

dans le système binaire

1 = 100

 10 = 101

100 = 102

1000 = 103

etc.

1 = 2= 1

10 = 2= 2

100 = 2= 4

1000 = 2= 8

etc.  

 

Le système binaire permet aussi de coder les lettres de l'alphabet avec seulement deux signes également, par exemple de la façon suivante :

Alphabet latin Codage binaire
 A  01000001
B 01000010
C 01000011
D 01000100
E 01000101
F 01000110

etc.

 

etc.

 

Cela permet même de coder une image (avec un découpage en pixels correspondant à un quadrillage) ou un son (quand un son analogique est numérisé en format WAV ou MP3 par exemple).

 

Bien sûr, le fait de se limiter à deux signes est très pratique quand on passe de la théorie à la pratique (avec des dispositifs mécaniques, électromécaniques ou électroniques) puisque cela permet de n'exploiter, concrètement, que deux états physiques (le courant passe ou ne passe pas, par exemple).

 

 

Utilisation du codage binaire sur une trame tabulaire : cartes perforées et autres supports numériques (rappel)

 

C’est précisément ce système de codage qui est utilisé dans les supports numériques (de la carte perforée à la clé USB en passant par le disque dur).

 

Nous avons déjà vu qu’il s’était développé avec les premières formes de programmation sur carte perforée :

  • pour les orgues de barbarie
  • puis pour les métiers à tisser
  • et enfin sur les premiers calculateurs d’IBM.

 

Dans ce cas, c’est l’association entre le codage numérique et une trame tabulaire qui rend le codage pratique et efficace. Par exemple, sur la carte perforée d’un orgue de barbarie :

  • l’absence de perforation correspond à l’absence de note jouée,
  • une perforation à une certaine hauteur (comme sur une portée musicale) détermine la touche activée donc la hauteur de la note,
  • la largeur de la perforation détermine la durée pendant laquelle la note est tenue (cette partie du codage est de nature analogique),
  • le rapprochement ou l’éloignement des perforations contribue aussi à produire le rythme prévu.

 

C’est le même principe qui permet de dessiner un motif sur un pull avec un métier à tisser, une image sur l’écran de votre ordinateur ou de votre smartphone...

 

Pour résumer, les orgues de Barbarie (on ne sait pas encore où se situait cette « Barbarie », autrement dit où ils ont été inventé... mais on peut supposer que celui qui a inventé cela était moins barbare que génial) combinaient :

  • un codage binaire
  • un système tabulaire (donc une notation sur une grille à deux dimensions, comme sur une portée musicale)
  • des éléments analogiques.

 

Les codages informatiques ont essentiellement repris les deux premiers éléments : le système tabulaire et le codage binaire.

 

 

Invention du codage binaire par les Chinois dans l’antiquité

 

Le premier Européen qui a compris que les Chinois avaient inventé le codage binaire dès l’antiquité était un philosophe polyglotte, Gottfried Wilhelm Leibniz, qui a publié dès 1703 un ouvrage intitulé (dans sa traduction en français du XVIIIe siècle) : Explication de l’arithmétique binaire, qui se sert des seuls caractères O et I avec des remarques sur son utilité et sur ce qu’elle donne le sens des anciennes figures chinoises de Fohy.

 

En effet, un manuel de magie du premier millénaire avant J.-C., le Yi Jing (Livre des transformations), théorise l’ensemble des transformations possibles à travers une figure de 64 combinaisons binaires (64 figures constituées chacune d’un hexagramme : l'association de deux trigrammes, symbolisant chacun un aspect de la nature). Le yin correspond au trait plein et le yang, au trait discontinu (qui préfigure la perforation des cartes perforées), autrement dit, respectivement au 0 et au 1.

 

Il fallait beaucoup de connaissances (d’abord savoir lire et comprendre le chinois...), de curiosité, d’ouverture intellectuelle, d’esprit d’analyse et de synthèse – en bref : d’intelligence – pour comprendre cela. Pourtant, des esprits éminents ont ironisé sur la découverte de Leibniz, qui allait pourtant changer le monde. Voltaire avait ainsi fait de lui (dans son conte philosophique Candide) le prototype du savant omniscient totalement ridicule, à travers son personnage Pangloss (« celui qui parle de tout » en grec), qui répétait inlassablement les mêmes idées théoriques (la caricature de celles de Leibniz) sans tenir compte du démenti apporté par les faits réels.

 

Voltaire, philosophe à lucidité variable

Si Voltaire a été un grand auteur de contes philosophiques (notamment) et un intellectuel engagé avant la lettre (en prenant la défense du protestant toulousain Calas accusé d’un crime qu’il ne pouvait avoir commis, tout comme Zola prendra la défense du capitaine Dreyfus également incriminé injustement pour des raisons religieuses), le philosophe de Ferney s’est également parfois lourdement trompé (on dirait aujourd’hui qu’il avait la maladie du Nobel, comme le professeur Luc Montagnier élaborant désormais des théories sur la téléportation de l’eau ou relayant des thèses complotistes sur le Covid) : non seulement il n’a fait que se moquer d’un des esprits les plus brillants de son temps et d’un visionnaire (Leibniz donc) mais il a aussi considéré que les peuples soumis à l’autorité despotique de l’impératrice russe Catherine II étaient... les plus heureux du monde (ce qui fait de lui le véritable Pangloss, finalement !) : « Savez-vous seulement où est le paradis terrestre ? Il est partout où est Catherine Seconde. » Elle avait pourtant renforcé le servage, conquis violemment l’Ukraine contre le gré de ses habitants (déjà...) et dépecé la Pologne. Les colères homériques de Denis Diderot contre la despote éclairée (elle était plus instruite que les autres monarques de son temps mais largement aussi despotique) refusant de libérer sa paysannerie de l’esclavage montrent que celui-ci était beaucoup plus lucide que son collègue, qui choisissait parfois mal les cibles de son ironie. Diderot/Voltaire : 1/0 sur ce sujet...

 

Le grand mathématicien Jean Le Rond d’Alembert (qui était pourtant l’un des responsables de L’Encyclopédie avec Denis Diderot) a quant à lui déclaré que cette histoire d’arithmétique binaire dénichée en Chine par Leibniz était ridicule car elle ne servirait jamais à rien... Certains penseurs voient loin (dans toutes les directions de l’espace et du temps) et d’autres, beaucoup moins loin...

 

Le symbole magique de Fohi (ou Fuxi, empereur mythologique chinois du XXIXe siècle avant J.-C.) représenté (plusieurs siècles avant J.-C.) dans le livre de divination magique qui a ébloui Leibniz. On y voit huit trigrammes (huit figures composées de trois signes binaires : des lignes continues ou brisées) : huit parce que c'est le nombre de combinaisons possibles avec deux valeurs possibles pour chacun des trois traits (2³ = 8). 

 

 

Si l'on superpose deux trigrammes (chacun étant l'une des huit possibilités vues ci-contre) pour obtenir un hexagramme (une figure composée de six signes binaires), on obtient cette fois soixante-quatre combinaisons possibles (26 = 64).


S'agissait-il déjà d'octets ?

 

Si la question avait été posée en anglais, avec la notion de bytes (comportant 6, 8 ou davantage de bits, donc de caractères binaires), la réponse aurait été oui.

 

En français, non, car le terme octet (traduction de byte) étant apparu quand les bytes étaient déjà passés de 6 à 8 bits, il (ce terme octet) renvoie explicitement au 8.

 

Pour mieux comprendre cette réponse globale, revenons à la définition de l'octet informatique, au risque de quelques répétitions (volontaires).

 

L’octet informatique (byte en anglais) est une combinaison de 6, 8, 9, 16, 32 ou 64 bits (bits en anglais déjà) : 1 byte = 6, 8, 9, 16, 32 ou 64 bits.

 

Le bit est une unité en code binaire : rappelons encore une fois qu'elle ne peut avoir que deux valeurs (0/1, vrai/faux, oui/non, courant qui passe / courant qui ne passe pas, trait interrompu / trait continu, emplacement perforé / non perforé…).

 

Les fonctions logiques de l'algèbre booléenne : proches de la pensée chinoise ou de la logique grecque d'Aristote ?

La logique booléenne (ou algèbre de Boole, du nom du mathématicien et philosophe britannique George Boole, initiateur de la logique moderne au XIXe siècle) est en grande partie une application de la logique aristotélicienne : le principe du tiers exclus, élaboré par Aristote dans l'antiquité grecque, consiste à considérer qu'une proposition (un énoncé) est soit juste, soit fausse et qu'il n’y a pas de troisième possibilité. C'est proche du principe de non-contradiction, selon lequel quelque chose ne peut pas être à la fois vrai et faux. Bien sûr, l'idée chinoise du yin et du yang dit l'inverse. Les valeurs de vérité prises en compte dans le calcul booléen découlent donc surtout des principes aristotéliciens : Boole a développé tout une série d'opérateurs (qui ont été repris ensuite dans les langages informatiques) fonctionnant, comme toute algèbre, selon une syntaxe précise (fondée sur les propriétés des opérateurs : distributivité, associativité, commutativité...) directement inspirée par la pensée d'Aristote.

 

Pour en revenir aux 64 hexagrammes de Chine ancienne, nous pouvons bien les voir comme 64 bytes de 6 bits. (vous aurez compris que le terme originel anglais byte est dans ce cas préférable au terme français octet puisqu'il n'y a pas 8 bits mais seulement 6).

 

Cela ressemble d’ailleurs au choix qui a été fait au début de l’informatique : « Dans les années 1950 et 1960, le byte était souvent composé de 6 bits, car tous les caractères nécessaires à la programmation en langue anglaise pouvaient être codés avec six bits (64 possibilités). » (Wikipédia, article « octet » consulté le 08/09/2022).

 

Le passage des bytes de 6 bits à des bytes (octets) de 8 bits (28 => 256 possibilités) a permis ensuite d’inclure d’autres caractères (accents, ponctuation, etc.) : ceux que vous êtes en train de lire...

 

En tout cas, force est de constater que Leibniz avait raison d'être ébloui par ces « anciennes figures chinoises de Fohi » dont il avait compris tout le potentiel.