article

Modulo (Rest) | Modulo operation | Modulus (wiskunde)

Algorithmique

Une très grande part des calculs réalisés en informatique sont des calculs d'arithmétique modulaire (d'autres se font, par exemple, en arithmétique saturée). Ceci est dû au fait que les données manipulées sont toujours représentées au final comme une suite finie de bits, c’est-à-dire un entier compris entre 0 et n - 1 = 2^{m} - 1\, et que donc l'arithmétique des entiers doit être approchée sur ces ensembles finis. De plus, nombre d'opérations sont réalisées bit à bit, c’est-à-dire dans \mathbb{Z}/2\mathbb{Z}\,.

Du fait de cette utilisation au quotidien, des notations spécifiques sont apparues pour cette discipline.

Ainsi, en programmation informatique, on désigne par modulo l'opération de calcul du reste de la division euclidienne. Si a est un entier quelconque et n un entier strictement positif, on écrira a mod n pour représenter le reste dans {0, …, n−1} de la division de a par n. Par exemple, 26 mod 12 = 2.

On note souvent cette opération a % n (notation utilisée dans les langages dérivés de C).

Implémentation de la fonction mod

Dans la pratique x mod y peut être calculé en utilisant d'autres fonctions. Des différences apparaissent suivant les types des variables utilisées, lesquels contiennent le type entier dans les implémentations courantes.

En utilisant la partie entière floor, floor(z) est le plus grand entier inférieur ou égal à z :

x mod y = x - y*floor(x/y).

En utilisant la fonction de troncature de la partie décimale (désignée par remain() dans certains calculateurs et qui retourne toujours un entier positif ; réalisée en C par l'opérateur de base %) :

x mod y = x - y*iPart(x/y)

Dans le cas de la fonction partie entière floor, le résultat est négatif pour un modulo avec un entier strictement négatif (en convenant de poser a mod -n = -(a mod n), par exemple 1 mod -2 = -1). Nous obtenons une fonction notée mod() sur les calculateurs et implémentée dans certains langages de haut niveau incluant Perl. Perl utilise aussi l'opérateur % pour effectuer une opération modulo, en faisant allusion à l'opérateur de division /.

Les deux définitions permettent à x et y d'être des entiers ou des nombres rationnels.

L'expression x mod 0 n'est pas définie dans la majorité des systèmes numériques, bien que certains la définissent comme étant x.

 

This article is licensed under the GNU Free Documentation License. It uses material from the "Modulo (informatique)".

Home Pageartsbusinesscomputersgameshealthhospitalshomekids & teensnewsphysiciansrecreationreferenceregionalscienceshoppingsocietysportsworld