Heim >Backend-Entwicklung >C++ >Wie berechnen wir das Modulo negativer Zahlen richtig?

Wie berechnen wir das Modulo negativer Zahlen richtig?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-13 13:31:42289Durchsuche

How Do We Correctly Calculate the Modulo of Negative Numbers?

Modulo negative Zahlen: ein schwieriges Problem

Für positive Zahlen ist es einfach, den Rest der Division einer ganzen Zahl durch eine andere zu berechnen. Allerdings kann der Standard-Modulo-Operator (%) zu unerwarteten Ergebnissen führen, wenn es sich um negative Zahlen handelt. Dies liegt daran, dass der Modulo-Operator den Rest nach der Division zurückgibt und bei negativen Operanden das Ergebnis ebenfalls negativ ist.

Um dieses Problem zu lösen und den Modul negativer Zahlen korrekt zu bestimmen, müssen wir unseren Ansatz anpassen. Eine gängige Lösung besteht darin, eine benutzerdefinierte modulare Funktion zu erstellen, um sicherzustellen, dass die Ergebnisse immer im gewünschten Bereich liegen.

Das Folgende ist eine modulare Funktionsimplementierung, die positive und negative Eingaben genau verarbeitet:

<code class="language-c++">int mod(int x, int m) {
    int r = x % m;
    return r < 0 ? r + m : r;
}</code>

In dieser Funktion ermitteln wir zunächst den Rest der Division mithilfe des Standard-Modulo-Operators. Wenn der Rest negativ ist, wird ein Modulowert hinzugefügt, um ihn in einen positiven Bereich umzuwandeln. Andernfalls geben wir den Rest unverändert zurück.

Durch die Verwendung dieser modifizierten Modulo-Funktion können wir die Indexposition im Array korrekt bestimmen, unabhängig davon, ob die Eingabe eine positive oder negative Ganzzahl ist. Zum Beispiel:

GetArrayIndex(4, 3) == 1 GetArrayIndex(3, 3) == 0 GetArrayIndex(2, 3) == 2 GetArrayIndex(1, 3) == 1 GetArrayIndex(0, 3) == 0 GetArrayIndex(-1, 3) == 2 GetArrayIndex(-2, 3) == 1 GetArrayIndex(-3, 3) == 0 GetArrayIndex(-4, 3) == 2

Mit diesem Ansatz können wir das Array mithilfe von Indizes, die positive und negative Zahlen korrekt verarbeiten, effizient durchlaufen.

Das obige ist der detaillierte Inhalt vonWie berechnen wir das Modulo negativer Zahlen richtig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn