samedi 1 mars 2008

Des codes graphiques (suite et fin)

Utilisé dès l'antiquité par les chinois (caractères de Fou-Hi en -3000 av JC) et les coréens, le codage binaire peut revêtir une apparence graphique ornementale permettant l'écriture masquée des nombres dans une image. En utilisant le codage élémentaire des lettres de l'alphabet latin qui consiste à leur attribuer le nombre correspondant à leur position dans l'alphabet, nous pouvons dissimuler un message littéral dans une suite de nombres allant de 1 à 26.

En système arithmétique binaire, le digit (la valeur possible d'une information à une position donnée) ne peut prendre que 2 valeurs. La notation arithmétique la plus courante de ces valeurs s'effectue à l'aide des symboles indos-arabes des 2 chiffres 0 et 1. En binaire le digit est nommé "bit", contraction de "binary digit". Ainsi, les lettres A, B et C codées sur 5 bits, en leur attribuant le nombre correspondant à leur position dans l'alphabet, deviennent : 00001, 00010 et 00011. Pourquoi 5 bits ? Tout simplement parce qu'avec 5 digits binaires nous pouvons écrire tous les nombres de 0 à 31. Nous disposons ainsi de la suite des nombres de 1 à 26 nous permettant de coder les lettres de l'alphabet et des nombres de 27 à 31, plus le zéro, pour coder d'autres informations. Nous verrons lesquelles par la suite.

Si nous souhaitons par exemple inscrire une signature dans une image en utilisant le système de codage défini plus haut nous devons dans un premier temps transcrire en une suite de nombres décimaux les lettres de la signature. La succession de lettres S - I - G - N - A - T - U - R - E devient ainsi la suite de nombres : 19 - 9 - 7 - 14 - 1 - 20 - 21 - 18 - 5. Cette suite, codée sur 5 bits devient : 10011 - 01001 - 00111 - 01110 - 00001 - 10100 - 10101 - 10010 - 00101.

Nous avons besoin d'un signe pour représenter la séparation entre deux mots. En effet, si la signature que nous voulons coder comprend un prénom puis un nom, comment représenter la séparation entre les deux termes ? Nous pouvons espacer graphiquement les deux séries de nombres, celle du prénom et celle du nom. Nous pouvons également les séparer par un trait ou par toute convention graphique de notre choix. Nous pouvons aussi convenir d'utiliser un nombre entre 27 et 31. Nous vous proposons d'utiliser le nombre 28, le nombre 27 notant le début ou la fin d'un message codé.

27 - J - E - A - N - 28 - C - O - D - E - 27 devient en suite décimale : 27 - 10 - 5 - 1 - 14 - 28 - 3 - 15 - 4 - 5 - 27. Transcrite en binaire, sur 5 bits, cette suite décimale devient : 11011 - 01010 - 00101 - 00001 - 01110 - 11100 - 00011 - 01111 - 00100 - 00101 - 11011. Vous noterez que la transcription sur 5 bits des nombres 27 et 28 est très facilement repérable. En disposant maintenant les suites binaires obtenues en colonne, nous obtenons un motif ornemental en bande. Les symboles 0 et 1 peuvent être remplacés par tout autre paire de signes graphiques et d'autres éléments graphiques peuvent être introduits pour faciliter ou brouiller la lecture du message.



Considérons maintenant la nécessité de permettre une lecture décimale au cœur de nos messages. En effet, si nous souhaitons coder un numéro de téléphone, un numéro dans une rue, un code postal, ... il nous faut indiquer au lecteur-décodeur que les nombres qui suivent tel signe ne correspondent plus à des lettres mais à des chiffres décimaux (de 0 à 9). Il nous faut aussi lui indiquer à partir de quel signe cesse la lecture décimale. Nous avons donc besoin de 2 signes conventionnels et nous pouvons utiliser les nombres 29 et 30.

Pour coder une adresse complète nous avons aussi besoin d'un séparateur de phrase ou de groupe de mot. Pour cet usage nous convenons d'utiliser le nombre 31. Le zéro sert à transcrire le chiffre décimal 0, on peut aussi convenir de l'utiliser comme trait d'union hors des transcriptions décimales.

L'adresse suivante :
Jean CODE 26 rue Digit 01001 BINAIRE-sur-CINQBITS
se code 11011 - 01010 - 00101 - 00001 - 01110 - 11100 - 00011 - 01111 - 00100 - 00101 -11100 - 11101 - 00010 - 00110 - 11110 - 11100 - 10011 - 10101 - 00101 - 11100 - 00100 - 01001 - 00111 - 01001 - 10100 - 11100 - 11101 - 00000 - 00001 - 00000 - 00000 - 00001 - 11110 - 11100 - 00010 - 01001 - 01110 - 00001 - 01001 - 10010 - 00101 - 00000 - 10011 - 10101 - 10010 - 00000 - 00011 - 01001 - 01110 - 10001 - 00010 - 01001 - 10100 - 10011 - 11011.

Voici une interprétation graphique de cette suite binaire :

Les principes de codage exposés ici peuvent servir à initier quiconque aux principes du codage informatique des textes selon les normes ASCII (voir l'article de Wikipédia à ce sujet). Il est possible d'introduire dans le système la notion d'en-tête pour identifier codeur et/ou destinataire du message. Les pistes pédagogiques sont nombreuses, les pistes graphiques infinies !

Pour ceux qui désirent en savoir plus sur le codage binaire des trigrammes coréens ou des hexagrammes chinois le site de
Gérard Villemin est un point de départ... attention cependant aux dérives ésotériques de liens en liens ! On peut compléter l'approche du sujet en lisant le chapitre consacré à Leibniz dans cet article de Jacques Dufresne.

1 commentaire: