Système de numération d'Avizienis

système de numération positionnel des entiers

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 classiques 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

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

Prérequis

modifier

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

Étant donnés 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

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

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

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

Choix des chiffres

modifier

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.

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

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
  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

Articles connexes

modifier

Bibliographie

modifier

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 :