0% ont trouvé ce document utile (0 vote)
195 vues55 pages

Comprendre l'opération modulo

Transféré par

水仙 水仙
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
195 vues55 pages

Comprendre l'opération modulo

Transféré par

水仙 水仙
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Modulo

(opération)
opération binaire

En informatique, l'opération modulo[1],[2], ou opération mod[3], est une opération


binaire qui associe, dans le cas de deux entiers naturels, le reste de la division
euclidienne du premier par le second, le reste de la division de a par n (n ≠ 0) est
noté a mod n (ou a % n dans certains langages informatiques). Ainsi 9 mod 4 = 1,
car 9 = 2×4 + 1 et 0 ≤ 1 < 4. De même 9 mod 3 = 0. L'opération peut être étendue
aux entiers relatifs, voire aux nombres réels[4], mais alors les langages de
programmation peuvent diverger de la définition mathématique, en particulier a
mod n n'est plus forcément positif ou nul comme l'impose la définition
mathématique du reste de la division euclidienne[5].

Cet article ne cite pas suffisamment ses sources (juin 2009).

Si vous disposez d'ouvrages ou d'articles de référence ou si vous


connaissez des sites web de qualité traitant du thème abordé ici, merci
de compléter l'article en donnant les références utiles à sa vérifiabilité
et en les liant à la section « Notes et références ».

En pratique : Quelles sources sont attendues ? Comment ajouter mes


sources ?

En mathématiques, l'usage du terme modulo est différent même s'il est lié : il ne
désigne pas une opération mais intervient pour caractériser une relation de
mot clef mod associé n'est le plus souvent utilisé que pour noter cette congruence,
même si un ouvrage comme Concrete Mathematics l'utilise également pour
désigner l'opération binaire[6].

Différentes définitions de
la fonction modulo
En principe, le modulo en informatique est défini comme le reste de la division
euclidienne. C'est à dire :

Soit la division euclidienne de a par b, on vérifie :

a=b×q+r;
0 ≤ r < |b|.
En informatique, cette analogie fonctionne pour les entiers naturels, exemple :

12 modulo 10 <=> reste de la division euclidienne de 12 par 10

12 modulo 10 = 2 car 12 = 10 * 1 + 2

Usage
En mathématique le modulo est couramment utilisé pour définir des relations de
congruence sur les entiers. C'est à dire des relations de comparaison circulaire
typique, par exemple, des calculs calendaires.

En informatique, le modulo est classiquement utilisé dans le même esprit.

Exemple simple
Les opérations sur les horloges sont
modulo 12. C'est un cas d'usage
classique de l'opération modulo
appliqué aux entiers naturels, en
mathématique comme en
informatique.

Un exemple classique utilisé en mathématique et également représentatif de son


usage en informatique, est le calcul sur une horloge.

En effet, sur une horloge, l'addition des heures est circulaire : si il est 9h et que je
rajoute 4h alors il est 13h, mais, sur une horloge qui repasse à 0 après le passage
à 12, alors il est noté 1h.

On dit que les opérations sur l'horloge sont alors « modulo 12 ».

1 et 13 sont alors dit « congrus modulo 12 », ou encore :

1 ≡ 13 (mod 12).

En considérant le modulo comme une opération, comme c'est le cas en


informatique, on écrirait :

Heure_finale = ( Heure_initiale + x ) mod 12

De manière générale, en informatique, l'opération modulo est utilisée pour toute


opération circulaire similaire (calcul calendaire, certains parcours de tableau etc.)

Exemple avec des décalages


circulaires
L'opération modulo permet d'effectuer un décalage circulaire d'indices. En effet, si
l'on considère la suite des entiers contigus de 1 à n, u = (1, 2, 3, …, n − 1, n), alors on
peut décaler de p rangs avec :

u'i = ((ui + p − 1) mod n) + 1.


P l dé l d d l it (1 2 3 4 5)
u'i = ((ui + 1) mod 5) + 1 ;
on a bien :

u'1 = ((1 + 1) mod 5) + 1 = 3


u'2 = ((2 + 1) mod 5) + 1 = 4

u'4 = ((4 + 1) mod 5) + 1 = 1
et donc u' = (3, 4, 5, 1, 2).

Divergence des définitions dans


les cas autres que les entiers
naturels ...

Représentations graphiques des fonctions


«reste» (en vert ) et «quotient» (en rouge)
dans la division euclidienne par un entier n,
à gauche pour un entier n positif et à droite
pour un entier n né[Link] reste de la
division euclidienne reste positif dans tous
les cas.
L'analogie avec la définition du reste de la division euclidienne est brisée une fois
qu'on l'étend aux entiers négatifs ou aux réels. Le comportement du modulo
diffère alors en fonction des langages de programmation et ne respecte en général
plus la définition mathématique du reste de la division euclidienne.

En effet, le reste de la division reste positif dans tout les cas (voir schéma ci-
contre), contrairement à de nombreuses autres définitions utilisées en
informatique (voir sections ci-après).

On décrit ci-dessous quelques-unes des définitions courantes dans les langages


informatiques.

Les différentes
définitions en
informatique

Définition utilisant la partie


entière (inférieure)

Article connexe : Partie entière et


partie fractionnaire.
Évolution du quotient et du reste (résultat
du modulo) en fonction des éléments a et b
et du signe du diviseur dans le cas où on
utilise la définition utilisant la partie entière.

Soit la notation définissant le plus grand entier inférieur ou égal à x.

Alors on peut poser une définition du modulo tel que :

L'opérateur mod retourne alors un modulo toujours compris entre 0 (inclus) et le


diviseur n (exclu) et qui a le même signe que le diviseur n. Ce qui le distingue du
reste de la division euclidienne puisque le modulo peut alors être négatif quand le
quotient est négatif.

Exemple :

Dividende Diviseur Quotient Reste

117 17 6 15

−117 17 −7 2

−117 −17 6 −15

117 −17 −7 −2

12,7 3,5 3 2,2

Cette définition vérifie les lois de l'arithmétique modulo, plus : x mod −y = −((−x)
mod y). Elle convient pour les calculs cycliques. La valeur modulaire retournée est
toujours du signe du diviseur (le diviseur étant positif dans la plupart des calculs
cycliques).
Définition utilisant la troncature
de la partie décimale

Évolution du quotient et du reste (résultat


du modulo) en fonction des éléments a et b
et du signe du diviseur dans le cas où on
utilise la définition utilisant la troncature.

est la troncature entière de x.

L'opérateur mod retourne alors :

un modulo positif inférieur à


pour a positif.
un modulo négatif supérieur à
pour a négatif.
Exemple :
Dividende Diviseur Quotient Reste

117 17 6 15

−117 17 −6 −15

−117 −17 6 −15

117 −17 −6 15

Le modulo a le même signe que l'opérande gauche.

Cette définition vérifie la loi: x mod −y = x mod y. Elle viole la loi (x+n) mod n = x
mod n.

Définition utilisant l'arrondi

Évolution du quotient et du reste (résultat


du modulo) en fonction des éléments a et b
et du signe du diviseur dans le cas où on
utilise la définition utilisant l'arrondi.

On peut également utiliser l'arrondi en définissant le quotient tel que :

Où « arrondi » est la fonction arrondi.

Le reste, résultat du modulo, est alors défini par :

Cette définition est notamment utilisée dans le langage LISP.


Définition utilisant la partie
entière supérieure

Évolution du quotient et du reste (résultat


du modulo) en fonction des éléments a et b
et du signe du diviseur dans le cas où on
utilise la définition utilisant l'arrondi.

Soit la notation définissant le plus petit entier supérieur ou égal à x.

Alors on peut poser une définition du quotient ainsi :

Et la définition du modulo tel que :

Le comportement est proche de celui de la partie entière inférieure.

Ce comportement est également trouvé en LISP.

Comparaison sous forme de


tableau

Cette section est vide,


insuffisamment détaillée ou
incomplète. Votre aide est la
bienvenue ! Comment faire ?
comparaison des opérateurs Modulo

partie entière troncature fonct. euclidienne

Dividende Diviseur Quotient Reste Quotient Reste Quotient Reste

117 17 6 15 6 15 6 15

−117 17 −7 2 −6 −15 -7 2

−117 −17 6 −15 6 −15 7 2

117 −17 −7 −2 −6 15 -6 15

12,7 3,5 3 2,2

Comportement avec des


opérandes non entiers
D'un point de vue strictement mathématique, il n'existe pas d'équivalent strict au
modulo dans l'espace des réels. Il peut exister des équivalences partielles mais
certaines opérations ne sont alors plus valables.

Toutefois, du strict point de vue des définitions utilisées dans les langages
informatiques, les deux définitions informatiques précédentes du modulo restent
valide et permettent donc à x et y d'être des nombres rationnels (ou réels en
mathématiques, bien que les systèmes informatiques de calcul numérique ne
sachent travailler que sur un sous-ensemble des nombres rationnels, du fait de
limites de précision).

Cependant, par analogie avec la fonction mathématique, en C, C++, PHP et de


nombreux langages, l'opérateur mod ou % n'opère que sur les types entiers. A
contrario : dans certains cas l'opérateur modulo est étendu aux réels Attention
parce que suivant le langage, les types numériques sont parfois convertis
implicitement en entiers (par coercition) ce qui peut donner l'impression que
l'opérateur est étendu aux réels quand ce n'est pas le cas.

Comportement des
langages de
programmation
Tableau récapitulatif des différents opérateurs et de leurs définition en fonction du langage
informatique

Prends
Prise
en
char
Language Operateur charge
nomb
les
flottan
entiers ?

ABAP MOD Oui O

ActionScript % Oui (no)

mod Oui (no)


Ada (langage)
rem Oui (no)

ALGOL 68 ÷× , mod Oui (no)

AMPL mod Oui (no)

[note 1]
APL | Oui O

AppleScript mod Oui (no)

AutoLISP de
(rem d n) Oui (no)
AutoCAD

AWK % Oui (no)

bash % Oui (no)

BASIC Mod Oui (no)

bc (voir bc
% Oui (no)
(Unix))

% , div Oui (no)

fmod (C)
C[8] (no) O
std::fmod (C++)
C++
remainder (C)
(no) O
std::remainder (C++)

% Oui O
C#
[Link] (no) O
Prends
Prise
en
char
Language Operateur charge
nomb
les
flottan
entiers ?

Clarion
% Oui (no)
(langage)

Clean rem Oui (no)

mod Oui (no)


Clojure
rem Oui (no)

FUNCTION MOD Oui (no)


COBOL
FUNCTION REM Oui O

% Oui (no)

CoffeeScript
%% Oui (no)

ColdFusion % , MOD Oui (no)

Common rem (signed) Oui O


Intermediate
Language [Link] (unsigned) Oui (no)

mod Oui O
Common Lisp
rem Oui O

Crystal (langage
% , modulo Oui O
de
programmation) remainder Oui O

D (langage) % Oui O

% Oui O
Dart (langage)
remainder() Oui O

Eiffel (langage) \\ Oui (no)

Elixir (langage) rem/2 Oui (no)


Prends
Prise
en
char
Language Operateur charge
nomb
les
flottan
entiers ?

[Link]/2 Oui (no)

modBy Oui (no)


Elm (langage)
remainderBy Oui (no)

rem Oui (no)


Erlang
(langage) math:fmod/2 (no) O

Euphoria mod Oui (no)

(langage)
remainder Oui (no)

% Oui O
F#
[Link] (no) O

Factor mod Oui (no)

FileMaker Mod Oui (no)

mod Oui (no)

Forth (langage)
fm/mod Oui (no)

sm/rem Oui (no)

mod Oui O
Fortran
modulo Oui O

Frink mod Oui (no)

Full BASIC MOD Oui O


(standard ANSI)
(en) REMAINDER Oui O
Prends
Prise
en
char
Language Operateur charge
nomb
les
flottan
entiers ?

% Oui (no)

GLSL
mod (no) O

GameMaker
mod , % Oui (no)
Studio (GML)

% Oui (no)

fmod (no) O
GDScript
(Godot) posmod Oui (no)

fposmod (no) O

% Oui (no)

Go (langage) [Link] (no) O

[Link] Oui (no)

Groovy
% Oui (no)
(langage)

mod Oui (no)

Haskell rem Oui (no)

[Link]' (GHC) (no) O

Haxe % Oui (no)

HLSL % Oui O

[note 1]
J (langage) | Oui (no)

% Oui O
Java (langage)
[Link] Oui (no)
Prends
Prise
en
char
Language Operateur charge
nomb
les
flottan
entiers ?

JavaScript
% Oui O
TypeScript

mod Oui O
Julia (langage)
% , rem Oui O

% , rem Oui O
Kotlin (langage)
mod Oui O

% Oui (no)
ksh

fmod (no) O

LabVIEW mod Oui O

LibreOffice =MOD() Oui (no)

MODULO Oui (no)


Logo (langage)
REMAINDER Oui (no)

Lua (langage) 5 % Oui O

Lua (langage) 4 mod(x,y) Oui O

Liberty BASIC
MOD Oui (no)
(en)

Mathcad mod(x,y) Oui (no)

e mod m (by default), modp(e, m) Oui (no)

Maple mods(e, m) Oui (no)

frem(e, m) Oui O
Prends
Prise
en
char
Language Operateur charge
nomb
les
flottan
entiers ?

Mathematica Mod[a, b] Oui (no)

mod Oui (no)


MATLAB
rem Oui (no)

Maxima mod Oui (no)

(logiciel)
remainder Oui (no)

Maya
Embedded % Oui (no)

Language

Microsoft Excel =MOD() Oui O

Minitab MOD Oui (no)

MOD Oui (no)


Modula-2
REM Oui (no)

MUMPS # Oui (no)

Netwide % , div (unsigned) Oui (no)


Assembler
(NASM, %% (signed) Oui (no)
NASMX)

Nim (langage) mod Oui (no)

Oberon
MOD Oui (no)
(langage)

Objective-C % Oui (no)


Prends
Prise
en
char
Language Operateur charge
nomb
les
flottan
entiers ?

Object Pascal,
Delphi mod Oui (no)

(langage)

mod Oui (no)


OCaml
mod_float (no) O

Occam
\ Oui (no)
(langage)

Pascal
(langage) (ISO-
mod Oui (no)
7185 and
-10206)

% Oui (no)
Perl (langage)
POSIX::fmod (no) O

mod Oui (no)


Phix
remainder Oui (no)

% Oui (no)
PHP
fmod (no) O

PIC BASIC Pro \\ Oui (no)

PL/I mod Oui (no)

PowerShell % Oui (no)

Programming
[Link] - 'MOD; (\)' Oui (no)
Code (PRC)

Progress
(Progress modulo Oui (no)

Software)
Prends
Prise
en
char
Language Operateur charge
nomb
les
flottan
entiers ?

Prolog (ISO
1995 ([Link] mod Oui (no)

[Link]/stan
dard/[Link]
rem Oui (no)
ml) [archive])

PureBasic % , Mod(x,y) Oui (no)

PureScript `mod` Oui (no)

% Oui (no)

Pure Data
mod Oui (no)

% Oui O
Python
[Link] (no) O

Q# % Oui (no)

R (langage) %% Oui O

modulo Oui (no)


Racket
remainder Oui (no)

Raku % (no) O

RealBasic MOD Oui (no)

Reason mod Oui (no)

Rexx // Oui O

RPG %REM Oui (no)

% , modulo() Oui O
Ruby
remainder() Oui O
Prends
Prise
en
char
Language Operateur charge
nomb
les
flottan
entiers ?

% Oui O
Rust
rem_euclid() Oui O

SAS MOD Oui (no)

Scala % Oui O

modulo Oui (no)


Scheme
remainder Oui (no)

mod Oui (no)

mod0 Oui (no)


Scheme R6RS
flmod (no) O

flmod0 (no) O

Scratch mod Oui O

mod Oui O
Seed7
rem Oui O

modulo Oui (no)


SenseTalk
rem Oui (no)

sh (POSIX)
(includes bash, % Oui (no)

mksh, &c.)

\\ Oui (no)
Smalltalk
rem: Oui (no)

Snap! mod Oui (no)


Prends
Prise
en
char
Language Operateur charge
nomb
les
flottan
entiers ?

Spin // Oui (no)

Solidity % Oui (no)

SQL (SQL:1999) mod(x,y) Oui (no)

SQL (SQL:2011) % Oui (no)

mod Oui (no)

Standard ML
[Link] Oui (no)

[Link] (no) O

Stata mod(x,y) Oui (no)

% Oui (no)

Swift remainder(dividingBy:) (no) O

truncatingRemainder(dividingBy:) (no) O

% Oui (no)
Tcl
fmod() (no) O

tcsh % Oui (no)

Torque % Oui (no)

Turing mod Oui (no)

Verilog (2001) % Oui (no)

mod Oui (no)


VHDL
rem Oui (no)

VimL % Oui (no)

Visual Basic Mod Oui (no)


Prends
Prise
en
char
Language Operateur charge
nomb
les
flottan
entiers ?

i32.rem_u , i64.rem_u (unsigned) Oui (no)


WebAssembly
i32.rem_s , i64.rem_s (signed) Oui (no)

x86 assembly IDIV Oui (no)

% Oui O
XBase++
Mod() Oui O

%,
Zig Oui O
@mod , @rem

Z3 theorem
div , mod Oui (no)
prover

Quelques détails concernant


certains langages suivants la
définition utilisant la partie
entière inférieure

Perl : $a % $n est défini sur les


entiers ; les opérandes réels sont
tronqués vers 0 par coercition ;
Visual Basic : a Mod n est défini
sur les réels et sur les entiers, et
renvoie un entier si les deux
opérandes sont entiers ;
Pascal (ISO 7185) : a mod n
n'admet que des opérandes
entiers, et n doit être strictement
positif ;
Excel : MOD(a;n) fonctionne sur
les nombres réels ;
Python : La FAQ explique ce choix
par l'exemple suivant :

« si une horloge indique 10 heures, qu'indiquait-elle 200


heures avant ? -190 % 12 == 2 est utile ; -190 %
12 == -10 est un bug prêt à mordre[56]. »
Quelques détails concernant
certains langages suivants la
définition utilisant la troncature

Free Pascal et Delphi n'autorisent


que des opérandes entiers, et la
définition du langage[57] précise :
« Le signe du résultat est le signe
de l'opérande gauche » ;
C[8], C++ : a % n demande des
opérandes entiers ;
PHP : $a % $n est défini sur les
entiers et retournera un résultat
ayant le même signe que $a ;
Scilab : modulo(a, n) accepte
des réels.
Si l'on souhaite utiliser le modulo dans sa définition partie entière inférieure pour
l'un de ces langages on peut utiliser l'expression :
(a % n + n) % n

Valeur d'un modulo 0


(valeur 'zéro')
Dans la plupart des langages, l'opération modulo ne donne aucun résultat si le
diviseur est nul, mais lance une exception arithmétique de division par zéro.

Équivalence
Les opérations sur les modulos peuvent être réduites ou étendues de la même
manière que les autres opérations mathématiques.

Identité:

pour tous
les entiers strictement
positifs .
Si est un nombre premier
qui n'est pas un diviseur de ,
alors

, d'après le petit théorème de


Fermat.
Inverse:

est l'inverse
modulaire, qui est défini si et
seulement si et sont
premiers entre eux, ce qui est
le cas quand la partie gauche
est définie:

.
Distributivité:
D’où :

Division (définition):

, quand l'opérande de gauche est


défini. Non définie sinon.
Multiplication inverse:

Notes et références

Notes

1. Argument order reverses, i.e.,


α|ω computes , the
remainder when dividing ω by
α.
2. C99 and C++11 define the
behavior of % to be
Troncature[9]. The standards
before then leave the behavior
implementation-defined[10].
3. Divisor must be positive,
otherwise undefined.
4. As discussed by Boute, ISO
Pascal (langage)'s definitions of
div and mod do not obey the
Division Identity of D = d · (D /
d) + D % d, and are thus
fundamentally broken.
5. Perl (langage) usually uses
arithmetic modulo operator that
is machine-independent. For
examples and exceptions, see
the Perl documentation on
multiplicative operators[42].

Références

1. « Fonction modulo ([Link]


[Link]/docs/fr/wcici/7.5.
1?topic=reference-modulo-func
tion) [archive] », sur [Link]
2. Brian W. Kernighan et Denis M.
Ritchie, Le Langage C : Norme
Ansi, Dunod, 2000, p. 41 - Les
opérateurs arithmétiques
3. Ronald Graham, Donald Knuth
et Oren Patashnik (trad. Alain
Denise), Mathématiques
concrètes : Fondations pour
l'informatique, Paris, Vuibert,
2003, 2e éd., xiv+688
(ISBN 978-2-7117-4824-2), p. 88-89.
4. Raymond T. Boute, « The
Euclidean definition of the
functions div and mod », ACM
Transactions on Programming
Languages and Systems, ACM
Press (New York, NY, USA),
vol. 1, no 2,‎avril 1992, p. 127–
144
(DOI 10.1145/128861.128862 ([Link]
, lire en ligne ([Link]
[Link]?id=128862&coll=portal&dl
=ACM) [archive]), p. 128-129.

5. Graham, Knuth et Patashnik


2003, p. 89, et note marginale p.
88.
6. Graham, Knuth et Patashnik
2003, p. 88-89, pour l'opération
binaire, p.143 pour la
congruence. Les auteurs
n'utilisent le terme modulo que
pour la relation de congruence,
mais nomment « mod »
l'opération binaire.
7. « ISO/IEC 8652:2012 -
Information technology —
Programming languages —
Ada », ISO, IEC,‎2012, sec. 4.5.5
Multiplying Operators
8. Depuis ISO C99. En ISO C90, en
cas d'opérande négatif, le signe
du résultat était défini par
l'implémentation.
9. « C99 specification (ISO/IEC
9899:TC2) ([Link]
[Link]/jtc1/sc22/wg14/www/do
cs/[Link]) [archive] »,
6 mai 2005 (consulté le
16 août 2018), sec. 6.5.5
Multiplicative operators
10. « ISO/IEC 1[Link]
Programming languages –
C++ », International
Organization for
Standardization (ISO),
International Electrotechnical
Commission (IEC),‎2003, sec.
5.6.4 :

« the binary % operator yields the remainder


from the division of the first expression by the
second. .... If both operands are nonnegative
then the remainder is nonnegative; if not, the
sign of the remainder is implementation-
defined »
11. « ISO/IEC [Link]
Programming languages – C »,
ISO, IEC,‎1990, sec. [Link] :

« The fmod function returns the value x - i * y,


for some integer i such that, if y is nonzero,
the result has the same sign as x and
magnitude less than the magnitude of y. »

12. (en-US) dotnet-bot,


« [Link](Double,
Double) Method (System) (http
s://[Link]/en-us/d
otnet/api/[Link]
ainder?view=net-7.0) [archive] »
(consulté le 4 octobre 2022)
13. « [Link] - Clojure v1.10.3
API documentation ([Link]
[Link]/clojure/[Link]
e-
[Link]#[Link]/mod) [arc
hive] » (consulté le 16 mars 2022)

14. « [Link] - Clojure v1.10.3


API documentation ([Link]
[Link]/clojure/[Link]
e-
[Link]#[Link]/rem) [arc
hive] », sur [Link]
(consulté le 16 mars 2022)
15. ISO/IEC JTC 1/SC 22/WG 4,
ISO/IEC 1989:2023 –
Programming language COBOL,
ISO, janvier 2023 (lire en ligne (http
s://[Link]/standard/[Link]
l) [archive] )

16. CoffeeScript operators ([Link]


[Link]/#operators) [arc
hive]

17. ISO/IEC JTC 1/SC 22, ISO/IEC


23271:2012 — Information
technology — Common
Language Infrastructure (CLI),
ISO, février 2012 (lire en ligne (http
s://[Link]/standard/[Link]
l) [archive]), §§ III.3.55–56
18. « Expressions - D Programming
Language ([Link]
ec/[Link]#mul_expres
sions) [archive] », sur [Link]
(consulté le 1er juin 2021)

19. « operator % method - num


class - dart:core library - Dart
API ([Link]
2.13.1/dart-core/num/operator_
[Link]) [archive] », sur
[Link] (consulté le
1er juin 2021)
20. « remainder method - num
class - dart:core library - Dart
API ([Link]
2.13.1/dart-core/num/remainde
[Link]) [archive] », sur
[Link] (consulté le
1er juin 2021)

21. « Kernel — Elixir v1.11.3 (http


s://[Link]/elixir/[Link]
ml#rem/2) [archive] », sur
[Link] (consulté le
28 janvier 2021)

22. « Integer — Elixir v1.11.3 (http


s://[Link]/elixir/[Link]
ml#mod/2) [archive] », sur
[Link] (consulté le
28 janvier 2021)
23. « Basics - core 1.0.5 ([Link]
[Link]/packages/e
lm/core/latest/Basics#modBy)
[archive] », sur [Link]-
[Link] (consulté le 16 mars 2022)
24. « Basics - core 1.0.5 ([Link]
[Link]/packages/e
lm/core/latest/Basics#remain
derBy) [archive] », sur
[Link] (consulté le
16 mars 2022)

25. « Erlang -- math ([Link]


org/doc/man/[Link]#fmod-
2) [archive] », sur [Link]
(consulté le 1er juin 2021)
26. ANSI, Programming Languages
— Full BASIC, New York,
American National Standards
Institute, 28 janvier 1987 (lire en
ligne ([Link]
alinformat6821nati_0) [archive]), §
5.4.4 :

« X modulo Y, i.e., X-Y*INT(X/Y). »

27. ANSI, Programming Languages


— Full BASIC, New York,
American National Standards
Institute, 28 janvier 1987 (lire en
ligne ([Link]
alinformat6821nati_0) [archive]), §
5.4.4 :

« "The remainder function, i.e., X-Y*IP(X/Y)." »


28. « GLSL Language Specification,
Version 4.50.7 ([Link]
[Link]/registry/OpenGL/spec
s/gl/[Link]) [ar
chive] » : « If both operands are
non-negative, then the
remainder is non-negative.
Results are undefined if one or
both operands are negative. »,
section 5.9 Expressions
29. « GLSL Language Specification,
Version 4.50.7 ([Link]
[Link]/registry/OpenGL/spec
s/gl/[Link]) [ar
chive] », section 8.3 Common
Functions
30. « The Go Programming
Language Specification - The
Go Programming Language (htt
ps://[Link]/ref/spec#Integer_o
perators) [archive] », sur [Link]
(consulté le 28 février 2022)

31. « math package - math -


[Link] ([Link]
math#Mod) [archive] », sur
[Link] (consulté le
28 février 2022)

32. « big package - math/big -


[Link] ([Link]
math/big#[Link]) [archive] »,
sur [Link] (consulté le
28 février 2022)
33. « 6 Predefined Types and
Classes ([Link]
g/onlinereport/haskell2010/has
[Link]#x13-
1370006.4.2) [archive] », sur
[Link] (consulté le
22 mai 2022)
34. « Operators ([Link]
[Link]/en-us/windows/win3
2/direct3dhlsl/dx-graphics-hlsl-
operators#additive-and-multipli
cative-operators) [archive] »,
Microsoft (consulté le
19 juillet 2021) : « The % operator
is defined only in cases where
either both sides are positive or
both sides are negative. Unlike
C, it also operates on floating-
point data types, as well as
integers. »
35. « Mathematics · The Julia
Language ([Link]
[Link]/en/v1/base/math/#Bas
[Link]) [archive] », sur
[Link] (consulté le
20 novembre 2021)

36. « Mathematics · The Julia


Language ([Link]
[Link]/en/v1/base/math/#Bas
[Link]) [archive] », sur
[Link] (consulté le
20 novembre 2021)

37. (en) « rem - Kotlin Programming


Language ([Link]
g/api/latest/jvm/stdlib/kotlin/-i
nt/[Link]) [archive] », sur
Kotlin (consulté le 5 mai 2021)
38. (en) « mod - Kotlin Programming
Language ([Link]
g/api/latest/jvm/stdlib/kotlin/m
[Link]) [archive] », sur Kotlin
(consulté le 5 mai 2021)

39. « Chapter 3: The NASM


Language ([Link]
c/[Link]#section-3.5.
11) [archive] », sur NASM - The
Netwide Assembler version
2.15.05
40. « OCaml library : Stdlib (https://
[Link]/releases/4.13/api/St
[Link]#VAL(mod)) [archive] »,
sur [Link] (consulté le
19 février 2022)
41. « OCaml library : Stdlib (https://
[Link]/releases/4.13/api/St
[Link]#VALmod_float) [archiv
e] », sur [Link] (consulté le
19 février 2022)

42. Perl documentation ([Link]


[Link]/[Link]#Multipli
cative-Operators) [archive]
43. « PHP: Arithmetic Operators -
Manual ([Link]
anual/en/[Link]
[Link]) [archive] », sur
[Link] (consulté le
20 novembre 2021)
44. « PHP: fmod - Manual (https://
[Link]/manual/en/functi
[Link]) [archive] », sur
[Link] (consulté le
20 novembre 2021)

45. « EuclideanRing ([Link]


[Link]/packages/pure
script-prelude/5.0.1/docs/Data.
EuclideanRing#t:EuclideanRin
g) [archive] »
46. (en-US) QuantumWriter,
« Expressions ([Link]
[Link]/en-us/quantum/qua
ntum-qr-expressions?view=qsh
arp-preview#numeric-expressio
ns) [archive] », sur
[Link] (consulté le
11 juillet 2018)

47. « R: Arithmetic Operators (http


s://[Link]/R/refma
ns/base/html/[Link])
[archive] », sur search.r-
[Link] (consulté le
24 décembre 2022)

48. « F32 - Rust ([Link]


[Link]/std/[Link]#
method.rem_euclid) [archive] »
49. [Link] ([Link]
al/html/r6rs/[Link]#n
ode_sec_11.7.3.1) [archive]
50. « Shell Command Language (ht
tps://[Link]/onlin
epubs/9699919799/utilities/V3
_chap02.html#tag_18_06_04) [
archive] », sur
[Link] (consulté le
5 février 2021)

51. « Apple Developer


Documentation ([Link]
[Link]/documentation/s
wift/binaryinteger/2885003) [ar
chive] », sur [Link]
(consulté le 20 novembre 2021)
52. « Apple Developer
Documentation ([Link]
[Link]/documentation/s
wift/floatingpoint/3017981-rem
ainder) [archive] », sur
[Link] (consulté le
20 novembre 2021)

53. « Apple Developer


Documentation ([Link]
[Link]/documentation/s
wift/floatingpoint/3017995-trun
catingremainder) [archive] », sur
[Link] (consulté le
20 novembre 2021)
54. « WebAssembly Core
Specification: Version 2.0 (http
s://[Link]/TR/wasm-core-
2/) [archive] », World Wide Web
Consortium, 19 avril 2022, §
4.3.2 Integer Operations
55. « Zig Documentation ([Link]
[Link]/documentation/0.10.
0/#Table-of-
Operators) [archive] », sur Zig
Programming Language
(consulté le 18 décembre 2022)

56. "Why does -22 // 10 return -3?"


([Link]
[Link]#why-does-2
2-10-return-3) [archive]
57. (en) Michaël Van Canneyt,
« Reference guide for Free
Pascal, version 2.6.0 ([Link]
[Link]/docs-html/ref/
[Link]) [archive] »,
décembre 2011.

Portail de l’informatique

Ce document provient de
« [Link]
title=Modulo_(opération)&oldid=216658120
».

La dernière modification de cette page a


été faite le 9 juillet 2024 à 11:05. •
Le contenu est disponible sous licence CC
BY-SA 4.0 sauf mention contraire.

Vous aimerez peut-être aussi