Les nouvelles technologies pour l’enseignement des mathématiques
Intégration des TICE dans l’enseignement des mathématiques

MathémaTICE, première revue en ligne destinée à promouvoir les TICE à travers l’enseignement des mathématiques.

Gerbert, Neper, Lehmer, binaire
Il y a 10 sortes de profs de maths : Ceux qui connaissent le binaire et ceux qui ne le connaissent pas

L’abaque de Neper permet d’enseigner le binaire par manipulation

Article mis en ligne le 6 octobre 2017
dernière modification le 24 octobre 2017

par Alain Busser

La représentation binaire des entiers est fondamentale en ICN, mais les élèves choisissant cet enseignement en 2nde sont rarement matheux. Comment parler de calculs binaires [1] sans faire un cours sur le calcul en général ? Dans cet article, on relatera une séquence pédagogique basée sur des outils d’informatique débranchée : L’abaque de Neper, et le puzzle d’addition binaire.

Regard historique sur la question

On gagnera à lire, préliminairement à cet article, les suivants :

On voit que l’invention de Gerbert d’Aurillac est, à juste titre, considérée comme une amélioration technologique de l’abaque romain, parce qu’on y pose moins de jetons, lesquels sont plus élaborés technologiquement que les jetons sans chiffres : Gerbert a fait, à grand frais, fabriquer des jetons (« apices ») en ivoire gravé de chiffres, et cette difficulté peut expliquer le peu de succès de l’abaque de Gerbert depuis son invention il y a plus de 1000 ans [3].

On constate que Gerbert n’utilisait que 9 jetons, le zéro étant codé par une absence de jeton.

Gerbert, ayant choisi la numération décimale et les chiffres arabes, n’a pas semble-t-il essayé d’autres bases de numération, que 10. Or, la base 2 présente l’avantage de ne pas nécessiter de chiffres, le zéro étant codé par l’absence de jeton, et le 1 par la présence d’un jeton.

L’absence de publication sur le sujet entre les années 1000 et 1600 laisse penser que le premier à avoir eu cette idée, ou tout au moins à y croire suffisamment pour la publier, est le baron John Napier, dans une annexe à son livre rabdologiae consacré aux bâtons de Neper.

Dans son ouvrage rédigé en latin, Neper utilise comme jetons des petits cailloux :

  • calculus pour un jeton (petit caillou, à l’origine du mot calcul dans les deux acceptions [4] du terme) ;
  • calculi pour une constellation de jetons.

Les cailloux de Neper ont été remplacés dans cet article par des graines de soja noir, comme on peut le voir sur les photos ci-dessous.

Voici le déroulé de la séquence sur le binaire :

  1. Après avoir montré une carte mère et expliqué que l’électronique numérique est basée sur des composants à deux états, il a été proposé une séance consistant à poser des nombres sur l’abaque de Neper, et à effectuer des additions et multiplications avec l’abaque de Neper (séance de 2 heures).
  2. La séance suivante a été plus courte et consacrée à jouer à tout-éteint puis au jeu de Wang (Emilio Posti) Avec une courte parenthèse sur l’hexadécimal (voir ci-desous).
  3. Après d’autres séances consacrées à de la programmation Scratch sur Raspberry Pi, une séance de deux heures a été l’occasion de revenir sur le binaire, cette fois-ci avec l’outil en ligne présenté en bas de l’article, et le puzzle d’addition binaire [5]

La séance relatée ci-après a été menée en 2nde ICN, pour introduire la notation binaire qui sera réinvestie régulièrement en enseignement de l’informatique. Pendant que les élèves jouaient aux haricots sur l’échiquier manipulaient l’abaque de Neper, la version numérique leur a été vidéoprojetée.

I/ Représentation binaire des nombres

Pour poser des nombres, on n’utilise qu’une seule ligne de l’échiquier. Néanmoins les exercices s’étant succédés rapidement, une élève a choisi de représenter 9 (1001) sur la ligne au-dessus de laquelle elle avait représenté 6 (110) :

Que le nombre 110 représenté en bas représente 6, se voit en additionnant les nombres portés par les cases contenant des haricots, soit 4+2. C’est immédiat même pour des élèves qui découvrent ICN et le binaire.

Des exercices avaient été en général rapidement et correctement faits ; ils consistaient soit à trouver quel est le nombre décimal dont une écriture binaire (comme 1011) était donné, soit à représenter en binaire des nombres dont la valeur (en décimal) était donnée [6].

Pour la séance suivante

Après les bits, viennent les quartets (4 bits). Comme il n’y en a que 16, on peut les lister, avec leur abréviation hexadécimale, pratique pour le codage des couleurs, entre autres :

décimal 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
binaire 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
hexadécimal 0 1 2 3 4 5 6 7 8 9 a b c d e f

Cette notation est pratique pour résumer un octet (8 bits), en le découpant en deux quartets, chacun d’entre eux étant codé par un chiffre hexadécimal. Par exemple, l’octet 42 codé 00101010 est formé des quartets 0010 et 1010 et se note donc, en hexadécimal, 2a.

Une séance ultérieure a été l’occasion de revenir à l’écriture hexadécimale : Elle a été consacrée au codage ASCII, et les élèves ont été sollicités pour coder et décoder entre caractère, décimal et hexadécimal.

La suite c’est le codage html des couleurs, chacune étant codée sur trois octets, chacun en hexadécimal pour faire plus court. Par exemple le violet (rouge et bleu à fond, vert inexistant) s’écrit #ff00ff en html.

II/Addition binaire

Pour additionner deux nombres, on commence par les poser sur les deux dernières lignes de l’échiquier. Par exemple, pour additionner 11 (1011 en binaire) et 5 (0101 en binaire), on les pose sur les deux lignes du bas :

Ensuite la première phase de l’addition se fait comme avec l’abaque romain, en glissant les graines (« verticalement ») dans la ligne du bas. Le geste est rapide :

Mais à ce stade, l’addition n’est pas finie, parce qu’il y a des cases contenant plusieurs graines ; ici la case des unités :

On ne change pas la valeur d’un nombre binaire en remplaçant deux graines de valeur 1 par une seule graine de valeur 2 :

Mais du coup, c’est la case des deuzaines qui contient trop de graines, et il faut répéter un de ces groupements-échanges vers la case des quatraines :

puis vers la case des huitaines :

et enfin vers celle des seizaines :

Comme il n’y a plus qu’une graine dans la case de valeur 16, on a maintenant un nombre en binaire, et c’est 16. On peut vérifier que 11+5=16, à l’aide de la calculatrice au besoin [7].

Calcul d’un nombre triangulaire

Comme l’abaque de Neper comprend plus que deux lignes, on peut aussi s’en servir pour additionner plus que deux nombres. Par exemple pour calculer 1+2+3+4+5, on pose chacun de ces nombres sur une ligne, obtenant ceci :

La première phase de l’addition est la même que s’il n’y avait que deux nombres : On fait descendre les haricots verticalement vers la dernière ligne :

On voit alors qu’il y a de nombreux groupements-échanges à effectuer, en particulier dans la case de droite qui contient 3 graines : Dans ce cas on doit laisser une des trois dans la case, et enlever les deux autres pour les remplacer par une graine unique (mais supplémentaire) dans la case des deuzaines :

Du coup la situation est la même qu’avant mais dans la case des deuzaines, on fait donc pareil :

Il y a alors encore un groupement-échange à effectuer, dans la case des huitaines :

Le résultat en binaire est donc 1111 soit 15 ; et effectivement on peut vérifier avec la calculatrice que 1+2+3+4+5=15.

Soustraction

Voici comment on peut effectuer une soustraction avec l’abaque de Neper, et ainsi, découvrir les relatifs :

III/Multiplication binaire

En vidéo

Noter que l’auteur de cette vidéo attribue l’abaque de Neper à Lucas, alors que l’apport de celui-ci ne concerne que le calcul modulaire (voir plus bas) :

Poser le calcul

Avant de multiplier deux nombres binaires, il est nécessaire de les poser, en binaire, sur les bords de l’abaque et non dans l’abaque. Par exemple avant d’effectuer la multiplication 6×7, on pose 6 (110) en-dessous de l’abaque, et 7 (111) à droite de celui-ci :

Ensuite, on place une graine à chaque case qui est au-dessus d’une graine et à gauche d’une graine (cela s’appelle effectuer un produit cartésien) :

On peut maintenant enlever les graines des bordures, qui n’avaient servi qu’à poser le calcul et non à l’effectuer :

Voici l’opération 6×7 (110 en abscisse et 111 en ordonnée) prête à être effectuée :

Pour effectuer la multiplication, on fait comme avec l’addition mais avec des décalages, ce qui revient à faire glisser les graines, non verticalement, mais en diagonale, à 45°, en bas à gauche (comme le fou du jeu d’échecs) :

Justification

Dans un repère dont l’axe des abscisses est le bord du bas du tableau, orienté de droite à gauche, et l’axe des ordonnées le bord droit, orienté de bas en haut, les diagonales parcourues sont des droites d’équation x+y=constante, et on ne change donc pas la valeur d’une graine en la glissant le long d’une telle diagonale.

La justification donnée aux élèves a consisté à poser la multiplication 6×7 en binaire, puis à l’effectuer au tableau :

   110
  ×111
  ----
   110
  110
 110
------
101010

En effectuant l’opération, on constate que des sommes sont effectuées verticalement (chiffre à chiffre) mais après un décalage vers la gauche, ligne après ligne. L’abaque de Neper est basé sur une disposition verticale (sans décalage) mais des additions obliques. On admet facilement que ça revient au même. Noter que Neper était, contrairement à nous, plus familier des additions obliques, comme on peut le voir dans l’onglet Gelosia de l’article sur les bâtons de Neper.

Une fois la multiplication effectuée, il reste à faire des groupements-échanges pour avoir l’écriture binaire du produit :

D’abord ça :

puis ça :

et enfin ça :

On retrouve que 6×7 est la réponse à la grande question sur la vie, l’univers et le reste puisque 101010 = (de droite à gauche) 2+8+32=42.

Autres activités sur le binaire

  • Le jeu Tout éteint est une introduction à la notion de négation (en cliquant sur une LED on change son état, passant d’allumée à éteinte ou le contraire) et notamment au fait que la double négation équivaut à une affirmation. Des variantes de ce jeu sont ici.
  • Sur la représentation binaire des nombres, cet outil a été jugé intéressant, sur le plan pédagogique, par des élèves d’ISN. On peut le manipuler plus bas, pour s’entraîner tout en lisant cet article.
  • Sur le calcul binaire avec des portes logiques.
  • Et pour s’entraîner à la représentation des nombres, le jeu de Wang déjà cité. Environ la moitié des élèves ne lit pas la règle du jeu et n’arrive pas à démarrer le jeu en autonome : Il faut les explications du prof...

Le binaire après Neper

On l’a vu ci-dessus, il a fallu 6 siècles pour que Neper propose une version binaire de l’abaque de Gerbert. Moins d’un siècle après, Leibniz, lors d’une étude sur le Yi-Qing, est le premier à publier quelque chose sur le binaire et son intérêt pour le calcul. En effet Neper n’utilisait jamais le mot « binaire », ne faisait aucune référence à la numération, et ne se servait pas des chiffres binaires (en particulier le 0 était codé par l’absence de jeton et non par un jeton portant un chiffre). Mais heureusement pour nous, Leibniz a rédigé son article sur le binaire en français. Il promeut ainsi le binaire :

Cette propriété sert aux essayeurs pour peser toutes sortes de masses avec peu de poids, et pourrait servir dans les monnaies pour donner plusieurs valeurs avec peu de pièces.

Pour des applications du calcul binaire à des réalisations technologiques il faudra attendre les années 1930 avec les travaux de Claude Shannon aux États-Unis et Konrad Zuse en Allemagne. Mais entre-temps, Édouard Lucas a trouvé comment faire du calcul, avec l’abaque de Neper, modulo un nombre de Mersenne : Il suffit pour cela d’identifier les bords gauche et droit de l’abaque de Neper (transformant celui-ci en abaque cylindrique).

En fait, Lucas utilisait cet abaque pour élever, modulo un nombre de Mersenne, des nombres au carré. En effet il avait découvert, lors de son étude sur la suite de Fibonacci, un algorithme permettant de tester la primalité d’un nombre M de Mersenne :

  1. On pose, sur l’abaque de Neper-Lucas, le nombre 4 (en binaire 100) ;
  2. On répète une fois de moins que l’exposant de M (6 fois pour M=127) les opérations suivantes :
    1. On élève le nombre au carré ;
    2. On soustrait 2 (ou 10, ce qui revient à enlever, après un éventuel groupement-échange, l’un des pions en position 2) au résultat, pour avoir le nouveau nombre
  3. Si l’échiquier est vide à la fin (ou avant), M est premier, sinon il est composé.

Avec cet abaque binaire, Lucas a redémontré en environ une heure la primalité de 231-1=2 147 483 647 (Fermat avait mis un an à le prouver) ; puis il a prouvé en quelques semaines la primalité de 2127-1 ; ce nombre vaut

170 141 183 460 469 231 731 687 303 715 884 105 727

L’abaque binaire a donc permis à Lucas d’être le détenteur, pendant plusieurs décennies, du record du plus grand nombre premier connu. Il va de soi que le calcul modulaire n’est pas à effectuer en début d’année en ICN, mais même si la preuve de l’algorithme de Lucas-Lehmer n’est pas à la portée d’un lycéen, programmer l’algorithme, avec par exemple le module decimal de Python, est plutôt simple, et permet de voir comment les choses se passent dans la cour des grands, puisqu’aujourd’hui encore, la plupart des nombres premiers records sont des nombres de Mersenne, et leur primalité est prouvée par l’algorithme de Lucas-Lehmer, en général sur des machines puissantes (Linux de compétition sur des machines multi-cœurs refroidies à l’eau). À l’heure où cet article est rédigé, le plus grand nombre premier connu est 274207281-1, dont l’écriture décimale comprend 22 338 618 chiffres. Les voici pour ceux qui voudraient faire des statistiques dessus :

Les amateurs de douchi savent bien que les haricots noirs sont meilleurs fermentés et que, pour les fermenter, il faut du temps. La séance suivante a donc eu lieu assez longtemps après celle sur l’abaque de Neper, pour que les élèves aient eu le temps de digérer le binaire et Neper. Elle s’est déroulée en deux temps :

  1. des révisions avec l’outil ci-dessous (poser un nombre, lire en décimal un nombre donné en binaire, et effectuer des conversions vers l’hexadécimal ou depuis l’hexadécimal). Très rapide et les élèves se sont sentis très à l’aise avec cet outil [8].
  2. Pendant que les élèves se succédaient sur l’unique prototype du puzzle d’addition disponible, les élèves non occupés à jouer au puzzle effectuer des calculs binaires, étaient chargés de faire une recherche documentaire sur le code ASCII [9].
  3. Et les dernières minutes ont été consacrées à un exercice consistant à écrire un mot de 10 lettres avec un logiciel de traitement de texte puis avec un éditeur de texte et comparer les tailles des fichiers odt et txt obtenus : Comme on a vu que chaque lettre occupe un octet, on comprend pourquoi le fichier « simple texte » occupe 10 octets, mais pas pourquoi le fichier odt en occupe environ 1000 fois plus [10]. Les ordinateurs de la salle d’informatique utilisée tournant tous sous Windows XP, c’est le « bloc-notes » de celui-ci qui a été utilisé pour fabriquer le txt. Et pour mesurer la taille des fichiers, certains élèves ont opté pour un clic-droit, d’autres pour un simple survol de la souris [11].

Pour passer du binaire à l’hexadécimal, on peut simplement couper l’octet en deux quartets et regarder le chiffre hexadécimal codant chacun de ces deux quartets. Par conséquent, on peut passer par le binaire pour coder en hexadécimal un nombre décimal. Cet outil le permet assez facilement, en plaçant des billes dans le sac marron :

Exemples d’utilisation

Un exercice consistait à trouver quel nombre s’écrit en hexadécimal f0. Si on est habitué à la numération (en base 16), on comprend qu’il s’agit de 15×16+0=240. Mais l’outil ci-dessus permet de trouver par manipulation, en passant par le binaire : f c’est 1111 et 0 c’est 0000, donc f0 c’est l’octet 11110000. On cherche à avoir ces nombres dans le tableau et pour cela on pousse ces boules dans le sac :

L’outil affiche 240 et on peut vérifier que 128+64+32+16=240.

Dans le cas inverse, si par exemple on demande d’écrire (en passant par le binaire), le nombre 100 (cent) en hexadécimal, on commence par placer dans le sac marron, les boules qu’il faut pour arriver à un total de 100 [12]. On trouve cette disposition :

On lit dans le tableau que 100 (décimal) s’écrit 01100100 (représentant 64+32+4) :

On le décompose en deux quartets 0110 et 0100 :

Comme 0110 s’écrit 6 en hexadécimal et 0100 s’écrit 4, l’écriture hexadécimale de 100 est donc 64.

Additions avec le puzzle

Les élèves sont passés par groupes de 4 : Un élève choisit l’addition à effectuer, un élève pose le premier opérande en haut (en jaune), le troisième pose le second opérande en bas (en bleu), et le dernier, aidé éventuellement du premier voire des deux autres, joue au puzzle effectue l’addition.

En posant 6+7 :

Le puzzle une fois complété donne, en noir, la somme 13 :

Le groupe suivant a choisi l’opération 10+7 :

Le résultat 17 se lit, là aussi, dans la ligne centrale, en noir. Ces deux groupes ont bien choisi les opérations, car elles menaient à des retenues qui aident à comprendre le principe du puzzle. La photo ci-dessus montre le puzzle en cours de calcul, et la seule pièce qui entre dans la partie encore vide porte le numéro 1. Ensuite il y a des 0 et on finit donc bien par 00010001 soit 17 en décimal.Moins pertinents ont été les choix des autres groupes. D’abord 10+20 :

Ensuite 24+5 :

Il faut entre 5 et 10 minutes à un groupe de 4 élèves, pour choisir, poser et effectuer l’addition, puis traduire la somme en décimal. Le plus long étant bien entendu l’addition, car il faut trouver non seulement la bonne pièce, mais aussi la bonne orientation de la pièce.