David Madore's WebLog: Comment écrire les nombres en base 5×6

[Index of all entries / Index de toutes les entréesLatest entries / Dernières entréesXML (RSS 1.0) • Recent comments / Commentaires récents]

↓Entry #2335 [older| permalink|newer] / ↓Entrée #2335 [précédente| permalien|suivante] ↓

(lundi)

Comment écrire les nombres en base 5×6

Nous écrivons les nombres en base 10 (c'est-à-dire que pour compter des billes, nous faisons des tas de 10, puis des tas de 10 de ces tas, puis des tas de 10 de ceux-là, etc., et nous indiquons par un chiffre le nombre de chaque type de tas) : heureusement, de la Chine à la Patagonie, tout le monde est d'accord là-dessus, y compris les pays reculés qui continuent à diviser leurs unités de longueur en 1760 et leurs unités de poids en 16. On voit parfois avancée çà ou là l'idée qu'on ferait mieux de compter en une autre base (typiquement 12). Le choix de 10 n'est peut-être pas idéal, mais l'intérêt d'avoir un standard commun à tout le monde est infiniment supérieur à l'avantage d'avoir telle ou telle autre base peut-être préférable dans l'absolu : même si nous utilisions une base franchement merdique, comme 11, il vaudrait mieux rester sur un standard merdique mais commun que de chercher à créer de la confusion en en changeant (c'est d'ailleurs pour le même genre de raison que je ne pense pas qu'il soit une bonne idée d'essayer de changer d'autres choses qui ont été adoptées universellement, comme le calendrier grégorien et ses bizarreries bêtement baroques). Tout ça pour dire que je ne propose certainement pas une seule seconde de changer de système d'écriture des nombres (même si j'avais le pouvoir de motiver des gens à initier un tel changement, je ne voudrais en aucun cas m'en servir). J'espère que j'ai bien enfoncé la porte ouverte, et que je peux maintenant aborder la question purement théorique de ce que pourrait être une bonne base si on devait repartir de zéro.

L'intérêt d'avoir une base b divisible par des petits nombres (premiers) est principalement que les fractions simples vont pouvoir s'écrire en base b de façon simple : le fait que 10=2×5 fait que les rationnels 1/2 et 1/5 s'écrivent respectivement 0.5 et 0.2 en cette base, tandis que le fait que 3 ne divise aucune puissance de 10 est responsable du fait que 1/3 s'écrit 0.333333…, ce qui est un peu agaçant dès qu'on veut manipuler des tiers (notamment à cause des arrondis : si on arrondi 1/3 à 0.333, alors dès qu'on en met trois, on tombe sur 0.999 et il y a un millième qui est tombé à l'eau). L'argument en faveur de la base b=12 est que comme il est divisible par 2, 3 et 4, il simplifie l'écriture des fractions de petit dénominateur (1/2 s'y écrit 0.6, 1/3 s'y écrit 0.4, et 1/4 s'y écrit 0.3), mais évidemment, on perd le 1/5, qui devient 0.24972497…, ce qui n'est pas franchement plaisant. • L'intérêt d'avoir une base b petite est, quant à lui, que les tables d'addition et de multiplication sont d'autant plus courtes à apprendre : la base 2 est bien sûr particulièrement simple de ce point de vue-là, et il est naturel qu'on s'en serve dans circuits électroniques (je veux dire : outre le fait qu'il est naturel de représenter 0 et 1 par l'absence et la présence d'un signal, l'addition et la multiplication se calculent de façon particulièrement simple), même si elle est peu appropriée au calcul humain à cause de la longueur de la représentation des nombres.

D'un autre côté, les choix sont apparemment limités : si la base est trop petite, les nombres sont trop longs à écrire, si elle est trop grande, les tables d'opération sont trop complexes à mémoriser, et si on cherche à avoir autant de divisibilités que possible, il semble que 6 ou 12 soient peut-être les choix les plus sensés, et en tout cas 10 n'est pas du tout mauvais.

(À ce propos, j'espère enfoncer de nouveau des portes grandes ouvertes, mais quand j'écris par exemple la base 12, il va de soi que ce 12 est lui-même écrit de la manière dont nous écrivons habituellement les nombres, c'est-à-dire dans la base dont la valeur est [le nombre de ‘I’ dans ce qui suit] IIIIIIIIII. C'est complètement idiot, mais si on n'éclaircit pas ce point, certains sont capables de s'imaginer que le nombre 10 est magique.)

La discussion ci-dessus, cependant, néglige le fait qu'il y a toutes sortes de variations possibles sur l'écriture en base b, qui peuvent être utiles dans différents sens, ou qui pourraient arriver pour des raisons essentiellement historiques. Les mayas, et les aztèques à leur suite, par exemple, pour autant que je comprenne, écrivaient les nombres en base 20, sauf que le chiffre des vingtaines était exceptionnel et n'allait que jusqu'à 18 : i.e., ils faisaient des paquets de 20 unités, puis des paquets de 18 paquets, puis des paquets de 20 de ces paquets, et de même de 20 à tous les niveaux suivants ; ceci fournissait une correspondance avec leur calendrier de 18 mois de 20 jours. Par ailleurs, même l'écriture des chiffres de 0 à 19 était plus ou moins faite en base 5 (ils utilisaient un bâton pour le nombre 5, un point pour le nombre 1, et donc par exemple trois bâtons et deux points pour le chiffre 17 — je dis bien chiffre, parce que 17 était un chiffre de leur écriture en base à-peu-près-20 ; le zéro était noté spécialement, pour ne pas laisser un vide disgracieux dans l'écriture).

Pour donner un exemple d'écriture qui n'est pas tout à fait une base b entière mais qui s'y rapproche beaucoup, on peut écrire les entiers en « base Fibonacci » : cette représentation n'utilise que les chiffres 0 et 1 et interdit à deux ‘1’ d'être consécutifs, la valeur des positions étant donnée par les termes de la suite de Fibonacci ((1,)1,2,3,5,8,13,21… chacun étant la somme des deux précédents). Ainsi, comme 17=13+3+1, le nombre 17 s'écrira 100101 : et les premiers entiers s'écrivent 0, 1, 10, 100, 101, 1000, 1001, 1010, 10000, 10001, 10010, 10100, 10101, 100000, etc. Ce mécanisme d'écriture (dont il existe d'ailleurs un certain nombre de variations) peut avoir un intérêt dans certaines circonstances, et il est possible d'y mener des calculs, mais évidemment, il est encore plus encombrant que la base 2 (et l'écriture fractionnaire n'est pas du tout claire). Je l'évoque surtout pour montrer qu'il n'y a pas que les écritures en base b qui peuvent avoir un sens ou un intérêt. (D'ailleurs, mon voisin de bureau est spécialiste de ce genre de questions.)

⁂ Bon, alors, si je devais absolument choisir un système d'écriture des nombres de novo, qui soit relativement aisément manipulable à la main si on oublie l'héritage de la base 10, je crois que je choisirais la base 30 écrite sous la forme 5×6, c'est-à-dire une base alternée 5 et 6.

Autrement dit, l'idée est de faire des paquets de 6, puis de faire des paquets de 5 de ces paquets, puis des paquets de 6 de ces paquets-là, puis des paquets de 5 de ceux-là, et ainsi de suite en alternant 6 et 5 : comme les paquets de paquets sont toujours de 30, on peut dire qu'on travaille en base 30, mais on le fait en n'utilisant que des paquets de 6 ou 5, ce qui garde des chiffres petits et manipulables, et des tables d'opérations facilement mémorisables.

Concrètement, on utiliserait deux séries de chiffres, disons 0,1,2,3,4,5 pour les chiffres en base 6, et Z,A,B,C,D pour ceux en base 5 ; ces deux séries alterneraient systématiquement (en terminant par la série 0…5 pour le chiffre des unités). Le fait d'avoir deux séries de chiffres qui alternent peut d'ailleurs avoir un intérêt en lui-même : il évite certaines erreurs de décalage d'une colonne (à la fois à la lecture, et lorsqu'on effectue les opérations). • Les premiers entiers s'écrivent donc 0, 1, 2, 3, 4, 5, A0, A1, A2, A3, A4, A5, B0, B1, B2, B3, B4, B5, C0, C1, C2, C3, C4, C5, D0, D1, D2, D3, D4, D5, 1Z0, 1Z1, 1Z2, 1Z3, 1Z4, 1Z5, 1A0, etc. Le nombre décimal 1760 s'écrirait, par exemple, 1D4C2 dans ce système, parce qu'il vaut 1×30² + 4×6×30 + 4×30 + 3×6 + 2 (le 2 est le chiffre des unités, le C est le chiffre des sixaines, le 4 est le chiffre des groupes de 5×6=30, le D est le chiffre des groupes de 6×5×6 = 6×30 = 180, et le 1 est le chiffre des groupes de 5×6×5×6 = 30² = 900) : cette conversion est, bien sûr, fastidieuse, mais ça ne dit rien sur cette base spécialement parce que la conversion d'une base à une autre est toujours fastidieuse (enfin, sauf entre puissances d'un même nombre).

L'addition en base mixte 5×6 se fait exactement comme en base (pure) quelconque, et notamment comme en base 10 : il faut retenir deux tables d'addition, l'une de taille 6 et l'autre de taille 5, mais leur taille combinée est plus petite qu'une table de taille 10 (très nettement, même, si on compte que la table des zéros est vraiment triviale) :

+012345
0012345
112345A0
22345A0A1
3345A0A1A2
445A0A1A2A3
55A0A1A2A3A4
+ZABCD
ZZABCD
AABCD1Z
BBCD1Z1A
CCD1Z1A1B
DD1Z1A1B1C

Les chiffres (A ou 1) soulignés indiquent qu'il s'agit là de retenues à faire sur la colonne suivante. À titre d'exemple, C3 plus C3 vaut 1B0 : on commence par faire 3+3, ce qui donne A0 d'après la table de gauche, c'est-à-dire 0 avec une retenue de A, puis on effectue C+C dans la table de droite, ce qui donne 1A, auquel il faut encore ajouter la retenue, donc 1B. L'algorithme est donc exactement le même que celui qu'on apprend à l'école primaire, il y a juste deux séries de chiffres, mais on ne peut pas se tromper de table ou de colonne parce que les chiffres d'une série donnée ne peuvent que s'ajouter ensemble. • Il faut quand même que je souligne qu'une écriture comme 1B n'est pas un nombre valable (un nombre entier doit toujours se terminer par un chiffre de la série 0…5) : quand la table de droite donne une écriture comme C+D=1B, il faut en fait comprendre qu'elle signifie C0 + D0 = 1B0, les 0 étant omis (ce n'est pas important pour appliquer l'algorithme d'addition, mais c'est important pour ne pas s'embrouiller sur la signification de ce qu'on fait).

Pour la multiplication, les choses sont un tout petit peu plus compliquées : on a trois tables de multiplication à retenir, dont la taille totale est encore inférieure à l'unique table de la multiplication en base 10, mais dont le mode d'emploi est un chouïa plus délicat. Voici ces trois tables :

×012345
0000000
1012345
2024A0A2A4
303A0A3B0B3
404A2B0B4C2
505A4B3C2D1
×ZABCD
0ZZZZZ
1ZABCD
2ZBD1A1C
3ZC1A1D2B
4ZD1C2B3A
5Z1Z2Z3Z4Z
×ZABCD
Z0Z0Z0Z0Z0Z
A0Z1A2B3C4D
B0Z2B4DA1AA3C
C0Z3CA1AA4DB2B
D0Z4DA3CB2BC1A

La table de gauche ne pose aucune difficulté particulière : on a, par exemple, 4×5=C2, écriture tout à fait normale et qui n'appelle pas à un commentaire particulier ; la table du milieu est utilisée normalement quand on multiplie ensemble un chiffre de la série 0…5 et un chiffre de la série Z…D, et il faut comprendre qu'il y a un 0 implicite après chaque lettre de la table (par exemple, 3×D=2B signifie en fait 3×D0=2B0, parce que 2B n'est pas un nombre valable) ; c'est surtout la troisième table qui est un tout petit peu subtile à utiliser, parce que le décalage des chiffres est un peu modifié : il y a de nouveau un 0 à comprendre implicitement à la fin de chaque entrée, mais il n'y a pas en plus un Z implicite comme on pourrait l'imaginer — par exemple, l'entrée B×D=A3C signifie en fait B0×D0=A3C0 et ce dernier ‘C’ peut surprendre parce qu'on s'attendrait à avoir un ‘Z’ si l'algorithme était exactement le même qu'en base 10 (où le produit de deux nombres se terminant par un chiffre zéro se termine par deux zéros). [Ajout La raison est qu'un nombre finissant par un ‘0’ signifie qu'il est multiple de 6 (i.e., de A0), et quand on multiplie deux tels nombres, on obtient un multiple de 6×6=36 (i.e., de 1A0), et pas forcément de 30 (i.e., 1Z0). Voir aussi le commentaire de JML sur cette entrée.] J'ai donc écrit en italiques le dernier chiffre (de la série Z…D) de chaque entrée de cette troisième table, pour rappeler qu'il est décalé d'un cran par rapport à ce qu'on peut imaginer — on peut par exemple le voir comme une retenue à droite. (Remarquons que sa valeur est complètement prévisible : c'est Z,A,B,C,D selon que le chiffre juste avant vaut 0,1,2,3,4, et il ne peut pas être 5, donc l'effort de mémoire n'est pas considérablement alourdi ! Accessoirement, dans chacune des trois tables ci-dessus on peut faire différents commentaires pour aider à la mémorisation.)

Voici comment faire une multiplication en base 5×6 avec ces tables : comme en base 10, on va multiplier le premier nombre dont on veut faire le produit (appelons-le le multiplicande) par chacun des chiffres de l'autre nombre (appelons-le le multiplicateur). Lorsque le chiffre du multiplicateur par lequel on multiplie est un chiffre de la série 0…5, pas de difficulté, on utilise les deux tables de gauche ci-dessus, et on traite les retenues comme on le fait en base 10, c'est-à-dire en en mémorisant une de chaque colonne à la suivante (on peut aussi, si on trouve fastidieux d'ajouter les retenues à la volée, les écrire explicitement comme une ligne supplémentaire qu'il faudra incorporer dans l'addition finale). En revanche, quand le chiffre du multiplicateur par lequel on multiplie est un chiffre de la série Z…D, on utilise les deux tables de droite, et la table la plus à droite va donner, à chaque fois qu'on l'utilise, un chiffre (de la série Z…D, en italique dans la table) à ajouter sur la colonne un cran à droite de celle qu'on serait normalement en train d'écrire : pour ne pas avoir à s'arracher les cheveux à faire plein d'additions à la volée, il est plus simple d'écrire en fait deux lignes, l'une pour les produits donnés par la table du milieu et l'autre pour ceux donnés par la table de droite (l'addition finale sera plus complexe, du coup, mais en contrepartie, les retenues sont beaucoup plus faciles à faire) ; ou, si on préfère la variante suivante, on se réserve une ligne pour les calculs « normaux » donnés par les deux tables, et une ligne uniquement pour les chiffres de la série Z…D qui sont en italiques dans la troisième table.

À titre d'exemple, si je veux calculer C3×C3, je commence par effectuer le produit du multiplicande par le dernier chiffre, 3, du multiplicateur : comme 3×3=A3, j'écris un 3 et je retiens A, puis C×3=1D, auquel j'ajoute mentalement la retenue de A donne 2Z, et j'écris donc finalement 2Z3 comme première ligne intermédiaire ; puis je dois multiplier C3 par C : une possibilité est d'écrire les deux produits 3×C=1D et C×C=A4D sur deux lignes différentes (les D finaux étant bien sûr alignés avec le Z de la ligne déjà écrite), l'autre variante est de se dire qu'on fait 3×C=1D donc on écrit D et on retient 1, puis C×C=A4D, donc on écrit A5, à cause de la retenue, devant le D déjà écrit, et le D italique de cette dernière multiplication est écrit sur une autre ligne. Dans un cas, on doit finalement ajouter 2Z3 + 1D□ + A4D□ (où j'ai noté □ pour un emplacement laissé vierge : c'est bien sûr la même chose qu'un zéro), dans l'autre on doit ajouter 2Z3 + A5D□ + D□, ce qui ne fait bien sûr aucune différence, seulement de ce qu'on a choisi de mettre dans une ligne ou l'autre, et la somme finale vaut B2C3.

Mes descriptions sont un peu fastidieuses parce que j'ai la flemme de faire des images ou une vidéo montrant clairement le processus (et aussi parce que j'ai décrit ci-dessus deux petites variantes de l'algorithme), mais il n'est vraiment qu'à peine plus compliqué que ce qu'on fait en base 10 : en pratique, j'ai fait quelques essais, et mis à part que je ne connais pas par cœur les tables ci-dessus et que j'ai toujours envie de convertir en base 10 pour vérifier mes calculs, je crois que ça va aussi vite et on pourrait tout à fait apprendre ce système de numération à des enfants à la place de la base 10. (Je répète que je ne propose surtout pas de le faire dans le monde actuel !, je dis juste que si on n'avait pas l'héritage culturel de la base 10, il serait aussi utilisable.) Les tables d'opérations étant plus faciles à apprendre, on y gagne un petit peu : d'un autre côté, les nombres sont 35% plus longs en moyenne (parce que 2×log(10)/log(30) vaut environ 1.35).

Je ne décris pas l'algorithme de division, mais il ne présente pas de difficulté particulière (de toute façon, une division façon école primaire se fait essentiellement par multiplication : on teste juste les chiffres qu'on peut placer au quotient) ; de même, la soustraction se fait sans problème. On peut aussi se dire qu'on fait les opérations en base 30, les chiffres en base 30 étant eux-mêmes écrits en base 6 (avec la convention que le premier chiffre est pris dans la série Z…D, le E étant impossible, et le second dans la série 0…5, pour aider à s'y retrouver) : dans ce cas, il n'y a pas de surprise à ce que les opérations soient faisables. (Ceci s'applique notamment à un algorithme classique de calcul à la main des racines carrées ; mais cet algorithme demande de traiter deux chiffres du radicande d'un coup, et du coup ici il faudra traiter deux chiffres en base 30, c'est-à-dire quatre chiffres en base mixte 5×6.)

Bien sûr, le système que je viens de décrire permet aussi de manipuler des nombres à virgule : immédiatement après la virgule, on a un chiffre de la série Z…D qui représente des cinquièmes, ensuite un chiffre de la série 0…5 qui représente des trentièmes (des sixièmes de cinquièmes), etc. Par exemple, 1/2 s'écrit 0.B3 (calculer B3×2 pour s'en convaincre), 1/3 s'écrit 0.A4, 1/4 s'écrit 0.A1B3, 1/5 s'écrit 0.A0 (qu'on peut noter simplement 0.A si on n'a pas peur de causer une confusion), et 1/6 (enfin, 1/A0) s'écrit 0.Z5. C'était bien tout l'intérêt du choix de la base 5×6 que les fractions de dénominateur ≤6 s'écrivent toutes de façon exacte avec un nombre fini de chiffres. Le nombre 1/7 (i.e., 1/A1), lui, s'écrit 0.Z4A2B5Z4A2B5… ; ensuite, 1/8 (i.e. 1/A2) vaut 0.Z3C4B3 et 1/9 (i.e., 1/A3) vaut 0.Z3A4, et quant à 1/10 (i.e. 1/A4), il vaut 0.Z3. Enfin, je signalerai que 1/11 (i.e., 1/A5) s'écrit 0.Z2C3D0B4A4D3A2Z5B1C1Z2C3D0B4… (Et pour lister un irrationnel, √2 vaut 1.B0B0C5C4D5B4D5Z2D5C0D2D1D0D3Z5D2C5C1B4C5…) Tous les nombres qui s'écrivent en décimal de façon exacte avec un nombre fini de chiffres (i.e., toutes les fractions qui admettent une puissance de 10 comme dénominateur) s'écrivent aussi de façon exacte en base 5×6 (mais il faudra, dans le pire des cas, deux fois plus de chiffres pour les écrire).

Bon, tout ceci était vraiment de la plus haute trivialité mathématique, et d'un intérêt infinitésimal puisque je répète que je ne propose pas une seule seconde d'adopter ce système (sauf peut-être si l'humanité perdait toutes ses connaissances antérieures et devait tout reconstruire de zéro) : j'ai donc consacré à ce sujet beaucoup plus d'espace qu'il ne le méritait. Mais si par hasard vous croisez un jour un de ces huluberlus qui font la pub de la base 12, vous pourrez lui répondre avec la base 5×6.

Et je laisse en exercice au lecteur de trouver les raisons (essentiellement anecdotiques) pour lesquelles la base 5×6 m'a semblé très légèrement préférable à la base 6×5.

↑Entry #2335 [older| permalink|newer] / ↑Entrée #2335 [précédente| permalien|suivante] ↑

[Index of all entries / Index de toutes les entréesLatest entries / Dernières entréesXML (RSS 1.0) • Recent comments / Commentaires récents]