Wie funktioniert der Modulo-Operator?

In Java beschreibt der %-Operator den Rest bei der Ganzzahldivision. Für positive Zahlen verhält sich der %-Operator genauso wie der aus der Mathematik bekannte mod-Operator.
Beispiel: 7 mod 5 = 2, 7 % 5 = 2

Unterschiede zwischen den beiden Operatoren ergeben sich bei negativen Zahlen. Der mod-Operator berechnet eine Restklasse.
Die möglichen Restklassen von n mod m sind 0 … m-1.
Beispiel: -7 mod 5 = 3

Der %-Operator in Java berechnet den Rest bei der Ganzzahldivision.
Beispiel: -7 % 5 = -2

Die mod-Operation kann in Java wie folgt implementiert werden:

static int mod(int n, int m) {
    int r = n % m;
    if (r < 0) {
        r += m;
    }
    return r;
}