Beim Durchlaufen der Modulo-Operation (der Straße, die ich betreten habe, als ich den Unterschied zwischen rem
undmod
erkundet habe ) bin ich auf Folgendes gestoßen:
In der Mathematik ist das Ergebnis der Modulo-Operation der Rest der euklidischen Division. Andere Konventionen sind jedoch möglich. Computer und Taschenrechner haben verschiedene Möglichkeiten, Zahlen zu speichern und darzustellen. Daher hängt ihre Definition der Modulo-Operation von der Programmiersprache und / oder der zugrunde liegenden Hardware ab.
Fragen:
- Als ich die euklidische Division durchlief, stellte ich fest, dass der Rest dieser Operation immer positiv (oder 0) ist. Welche Einschränkung der zugrunde liegenden Computerhardware zwingt Programmiersprachenentwickler dazu, sich von der Mathematik zu unterscheiden?
- Jede Programmiersprache hat eine vordefinierte oder undefinierte Regel, nach der das Ergebnis der Modulo-Operation sein Vorzeichen erhält. Welche Gründe werden bei der Festlegung dieser Regeln verwendet? Und wenn die zugrunde liegende Hardware das Problem ist, sollten sich die Regeln dann nicht unabhängig von der Programmiersprache entsprechend ändern?
(-3)/2 == -1
. Diese Definition kann nützlich sein. Wenn Sie %
mit dieser Teilung übereinstimmen möchten , erhalten x == (x/y)*y + x % y
Sie die Definition von %
in C # verwendet.