Système de numération d'Avizienis

Un article de Wikipédia, l'encyclopédie libre.

En mathématiques, et notamment en arithmétique, un système de numération d'Avizienis est un système de numération positionnel des entiers, relativement à une base entière qui est complet, au sens que tout entier est représentable, et redondant (un entier peut avoir plusieurs représentations). La redondance est assurée par l'introduction de chiffres (ou digits) en sus de ceux de la base. L'intérêt du système réside dans sa capacité à effectuer l'addition (et la soustraction) d'entiers sans propagation de retenue. Le système a été proposé par Algirdas Antanas Avižienis en 1961[1].

Les systèmes positionnels classique utilisent des chiffres, dont la place dans l'écriture du nombre indique le poids qui leur est affecté, c'est-à-dire la puissance de la base par laquelle ils sont multipliés et qui correspond à leur position dans la représentation. Dans un tel système, une base nécessite au moins chiffres pour pouvoir représenter tous les entiers. Typiquement, la valeur de ces chiffres va de à , et alors la représentation des entiers naturels dans un système positionnel est unique. Les systèmes redondants utilisent pour une base un nombre de chiffres strictement supérieur à . Le système d'Avizienis est un système redondant à chiffres signés, ce qui signifie que les chiffres peuvent être positifs ou négatifs. Par exemple, pour la base 3, les chiffres vont de −2 à +2.

Notations[modifier | modifier le code]

On se fixe une base entière (en fait il faut pour que l'addition fonctionne), et un entier . Le système de numération d'Avizienis possède chiffres qui vont de à [2]. On note les chiffres négatifs en les surlignant, ainsi signifient .

Par exemple, en base 3, avec les chiffres , la notation

représente le nombre , puisque

[3].

Le plus grand entier de chiffres que l'on peut représenter dans cette base s'écrit en utilisant des chiffres tous égaux à , c'est donc

.

On peut montrer[3],[4] que l'on doit avoir pour pouvoir représenter tous les entiers (c'est nécessaire puisque par exemple pour et , on ne peut représenter ).

Algorithme d'addition[modifier | modifier le code]

Prérequis[modifier | modifier le code]

L'algorithme d'addition d'Avizienis sans propagation de retenue[3],[1],[5],[6] suppose une base et chiffres , avec [7]. La condition est plus forte que la relation , qui assure que tout entier est représentable, et garantit l'absence de propagation de retenue. La deuxième condition, à savoir , assure que les chiffres sont plus petits en valeur absolue que la base.

Présentation[modifier | modifier le code]

Étant donné deux entiers

et

écrits sur chiffres dans cette base, on cherche à calculer dans cette base

Pour cela, pour , on calcule la retenue qui est prise comme un chiffre prenant deux valeurs : et .

et on pose :

.

On pose également :

.

Les calculs de retenues peuvent se faire en parallèle; en d'autres termes, il n'y a pas d'ordre à respecter dans leur évaluation. On a enfin, pour ,

.

Exemple[modifier | modifier le code]

On prend la base . La condition s'écrit ici , et on prend donc . Les chiffres autorisés sont [8],[5]. Les nombres à additionner sont à chiffres

et

Les calculs sont regroupés dans le tableau que voici

  5     4     3     2     1     0  

On obtient bien: .

Principe de fonctionnement[modifier | modifier le code]

On a

.

À chaque position , le chiffre calculé est la somme des chiffres et , plus la retenue de la position précédente; si la somme de et dépasse les bornes autorisées, on en soustrait ou ajoute la base, pour rentrer dans les bornes permises. Ce qui est particulier dans cet algorithme, c'est que la retenue ne dépend pas de la retenue précédente . Dans l'addition classique avec retenue, on fait la même opération, mais dans le cas où la somme des deux chiffres et et de la retenue dépasse la base, il faut la reporter, conduisant dans le cas classique, à calculer la valeur de la retenue précédente avant celle de la retenue courante, d'où une séquentialisation des calculs. Ici, le test laisse assez de marge pour pouvoir absorber la retenue , puisque . Les calculs de retenues peuvent donc se faire en parallèle. Le seul ordonnancement est la nécessité d'avoir calculé la retenue courante et la retenue précédente avant de calculer chaque chiffre de la somme.

Pour être précis, il faut d'abord vérifier que les chiffres sont bien compris dans l'intervalle de à . Pour cela[9], on part de

.

Si , alors , et comme , on a . Si au contraire (par exemple), alors et donc , et aussi.

Il faut ensuite vérifier que le nombre est bien égal à . Pour cela, en se souvenant que , on calcule

.

Applications[modifier | modifier le code]

Les systèmes de numération redondants ont plusieurs applications[1] : le codage de multiplieurs, les quotients dans les opérations de division ou d'opérations qui s'y rattachent, l'arithmétique en ligne. Les additions redondantes sont couramment employés dans les opérateurs de multiplication et de division (même si les données sont présentées, en entrée et en sortie, dans un système non redondant, les calculs internes sont réalisés dans un système redondant). Par exemple, la plupart des multiplieurs utilisent, au moins implicitement, un système de numération à redondant. Un processeur particulier utilisait même deux systèmes redondants différents : les itérations dans les divisions sont réalisées dans une notation à retenues conservées, et le quotient est d'abord calculé en base 4 avec des chiffres entre −2 et 2 avant d'être converti dans la notation binaire usuelle.[pas clair]

Extensions[modifier | modifier le code]

Choix des chiffres[modifier | modifier le code]

Guillaume Revy[5] présente une extension de la notation qu'il appelle encore la notation d'Avizienis. Au lieu de prendre, pour une base , les chiffres de à , il prend les chiffres d'un autre intervalle, formé de chiffres, allant de à . Le cas classique s'obtient pour et . On peut distinguer trois cas :

  • si , il n'y a pas assez de chiffres pour représenter tous les nombres ;
  • si , il y a exactement le nombre de chiffres nécessaire pour représenter les nombres et ils ont une représentation unique ; c'est le cas par exemple des chiffres en base 3, appelée « notation ternaire équilibrée »[10];
  • si , la représentation est redondante.

Base 2[modifier | modifier le code]

La méthode d'Avizienis nécessite une base plus grande que 2. Pour la base , deux méthodes d'addition en parallèle ont été développées, appelée en anglais « carry save » et « borrow save »; la première est traduite par addition à retenues conservées, la deuxième par addition à retenues conservées signées. On appelle la première aussi méthode de Chow et Robertson d'après leurs inventeurs qui l'ont décrite en 1978[1]. Les chiffres sont composés par des couples , dont la valeur est . Ainsi, en base 2, l'entier a les deux représentations et . La valeur de la représentation

est

.

Les méthodes à retenues conservées s'étendent à d'autres bases.

Historique[modifier | modifier le code]

Quand Avižienis a créé son système de numération redondante il ne savait[11] pas qu'un système très similaire avait déjà été proposé par Augustin Cauchy pour la base 10 dès 1840[12].

Notes et références[modifier | modifier le code]

  1. a b c et d Muller 2005, p. 20-21.
  2. Une formulation plus générale est exposée dans le cours de Guillaume Revy.
  3. a b et c Pettazoni 2001, p. 166.
  4. Pettazoni 2001, p. 173.
  5. a b et c Revy 2010.
  6. Frougny, Pelantová et Svobodová 2011.
  7. Pour , la condition s'écrit , et elle est irréalisable.
  8. Pettazoni 2001, p. 174.
  9. Voir la suite de la démonstration de Pettazoni 2001, p. 174.
  10. Le terme « notation ternaire équilibrée » est la traduction de « balanced ternary notation » utilisé par Knuth dans : Knuth 1997, section 4.1 Positional number systems.
  11. Voir ce qu'Avižienis en dit lui-même [1]
  12. Sur les moyens d'éviter les erreurs dans les calculs numériques, Mémoire aux comptes-rendus de l'Académie des sciences de la séance du 16 novembre 1840. Voir aussi Gérard Grancher Compter comme Cauchy dans Images des Mathématiques

Annexes[modifier | modifier le code]

Articles connexes[modifier | modifier le code]

Bibliographie[modifier | modifier le code]

L'article original d'Avizienis, difficile à trouver :

  • Algirdas Avizienis, « Signed-Digit number representations for fast parallel arithmetic », IRE Transactions on Electronic Computers, vol. EC-10, no 3,‎ , p. 389 - 400 (ISSN 0367-9950, DOI 10.1109/TEC.1961.5219227).

Exposés :

  • Bruno Pettazoni, Seize problèmes d'informatique, Springer, coll. « Scopos » (no 8), , 226 p. (ISBN 3-540-67387-3, présentation en ligne), « Problème 14, deuxième partie : Numération d'Avizienis Numération d'Avizienis. Énoncé p. 166, corrigé p. 173-174 », p. 166 (énonce) et 173-174 (corrigé).
  • (en) Jean-Michel Muller, Elementary Functions : Algorithms and Implementation, Boston, Birkhäuser, , 2e éd., 265 p. (ISBN 0-8176-4372-9, présentation en ligne), « 2.2. Redundant number systems », p. 19-22.

Exposé didactique :

Autre mention :

Knuth a un long paragraphe sur les notations positionnelles :