Système de numération d'Avizienis

De testwiki
Aller à la navigation Aller à la recherche

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 b nécessite au moins b chiffres pour pouvoir représenter tous les entiers. Typiquement, la valeur de ces chiffres va de 0 à b1, et alors la représentation des entiers naturels dans un système positionnel est unique. Les systèmes redondants utilisent pour une base b un nombre de chiffres strictement supérieur à b. 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

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

Par exemple, en base 3, avec les chiffres 2¯,1¯,0,1,2, la notation

21¯02¯

représente le nombre 43, puisque

233132+031230=22792=43[3].

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

a(bn1++b+1)=a(bn1)/(b1).

On peut montrer[3]Modèle:,[4] que l'on doit avoir 2a>b2 pour pouvoir représenter tous les entiers (c'est nécessaire puisque par exemple pour a=1 et b=4, on ne peut représenter 2).

Algorithme d'addition

Prérequis

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

Présentation

Étant donnés deux entiers

x=xn1x0 et y=yn1y0

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

z=znz0

z=x+y

Pour cela, pour i=0,,n1, on calcule la retenue qui est prise comme un chiffre prenant deux valeurs : 1 et 1¯.

ti+1={1¯si  xi+yia,0si  a<xi+yi<a,1si  xi+yia.

et on pose :

wi=xi+yibti+1.

On pose également :

wn=t0=0.

Les calculs de retenues ti 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 i=0,,n,

zi=wi+ti.

Exemple

On prend la base b=4. La condition b/2<a<b s'écrit ici 2<a<4, et on prend donc a=3. Les chiffres autorisés sont 3¯,2¯,1¯,0,1,2,3[8]Modèle:,[5]. Les nombres à additionner sont à n=5 chiffres

x=(697)10=3¯1021¯ et y=(498)10=201¯12¯

Les calculs sont regroupés dans le tableau que voici

i
  5     4     3     2     1     0  
xi
3¯ 1 0 2 1¯
yi
2 0 1¯ 1 2¯
xi+yi
1¯ 1 1¯ 3 3¯
ti 0 0 0 1 1¯ 0
wi
0 1¯ 1 1¯ 1¯ 1
zi
0 1¯ 1 0 2¯ 1

On obtient bien: 1¯102¯1=(199)10=(697)10+(498)10.

Principe de fonctionnement

On a

zi=wi+ti=xi+yi+tibti+1.

À chaque position i, le chiffre calculé est la somme des chiffres xi et yi, plus la retenue ti de la position précédente; si la somme de xi et yi 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 ti+1 ne dépend pas de la retenue précédente ti. Dans l'addition classique avec retenue, on fait la même opération, mais dans le cas où la somme des deux chiffres xi et yi et de la retenue ti 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 ti, puisque a<wi<a. 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 zi sont bien compris dans l'intervalle de a à a. Pour cela[9], on part de

zi=wi+ti=xi+yi+tibti+1.

Si a<xi+yi<a, alors ti+1=0, et comme ti{0,1¯,1}, on a axi+yia. Si au contraire xi+yia (par exemple), alors ti+1=1 et donc zi=xi+yi+tib2ab+1a, et aussiziab>a.

Il faut ensuite vérifier que le nombre z est bien égal à x+y. Pour cela, en se souvenant que t0=0, on calcule

i=0nzibi=i=0n(wi+ti)bi=i=0n1(xi+yibti+1+ti)bi+tnbn=i=0n1xibi+i=0n1yibii=0n1ti+1bi+1+i=1n1tibi+tnbn=x+y.

Applications

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. Modèle:Pas clair

Extensions

Choix des chiffres

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 b, les chiffres de a à a, il prend les chiffres d'un autre intervalle, formé de q+1 chiffres, allant de ω à ω+q. Le cas classique s'obtient pour ω=a et q=2a. On peut distinguer trois cas :

  • si q+1<b, il n'y a pas assez de chiffres pour représenter tous les nombres ;
  • si q+1=b, 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 1¯,0,1 en base 3, appelée « notation ternaire équilibrée »[10];
  • si q+1>b, la représentation est redondante.

Base 2

La méthode d'Avizienis nécessite une base plus grande que 2. Pour la base b=2, 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 (c,s), dont la valeur est c+s. Ainsi, en base 2, l'entier x=2 a les deux représentations (1,1) et (0,1)(0,0). La valeur de la représentation

(cn1,sn1)(c0,s0)

est

i=0n1(ci+si)2i.

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

Historique

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

Modèle:Références

Annexes

Articles connexes

Bibliographie

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

Exposés :

Exposé didactique :

Autre mention :

Knuth a un long paragraphe sur les notations positionnelles :

Modèle:Portail

  1. 1,0 1,1 1,2 et 1,3 Modèle:Harvsp.
  2. Une formulation plus générale est exposée dans le cours de Guillaume Revy.
  3. 3,0 3,1 et 3,2 Modèle:Harvsp.
  4. Modèle:Harvsp.
  5. 5,0 5,1 et 5,2 Modèle:Harvsp.
  6. Modèle:Harvsp.
  7. Pour b=2, la condition s'écrit 1<a<2, et elle est irréalisable.
  8. Modèle:Harvsp.
  9. Voir la suite de la démonstration de Modèle:Harvsp.
  10. Le terme « notation ternaire équilibrée » est la traduction de « balanced ternary notation » utilisé par Knuth dans : Modèle:Harvsp.
  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